Dobrý den, mám program kterým budu ovládat něco po COMportu, program který tu dávám je ořezaný je v něm jen to co mi nejde.
Mám vytvořený hlavniPROGRAM.py v něm se zobrazí jen menu a zaškrtavací tlačítko. Zaškrtavátko mění hodnotu promenné PORTje5 na 1 nebo 0. Po kliknutí na menu nastavení se otevře nové okno kde se vypíše aktuální COMport a okénko na nastavení nového. Když nastavím nové číslo COMportu mělo by se po zméčknutí OK přepsat hodnota promenné aktualniPORT na tu kterou jsem nastavil.
1) neumím používat Checkbutton, chci aby mi po zaškrtnutí měnilo hodnotu PORTje5 na 1 a po odskrtnuti na 0
2) Po zmáčknutí OK mi hlásí chybu že promenná OKNOzadavaniNOVYport není definovaná.
Mohl by mi prosím někdo poradit jak tyto problémy vyřešit?
hlavniPROGRAM.py
# -*- coding: utf-8 -*-
from Tkinter import *
import tkMessageBox
import menuNASTAVENI
cisloPortu = 9 #COM1=0
PORTje5=()
def nastaveniCOM():
menuNASTAVENI.nastaveniCOMportu(hlavni, cisloPortu, PORTje5)
def konec():
if tkMessageBox.askokcancel(u"Ukončení", u"Skutečně chcete skončit?"):
hlavni.destroy()
#xxxxxxxxxxxxxxxxxxxxxxx HLAVNÍ SMYČKA xxxxxxxxxxxxxxxxxxx
hlavni=Tk()
#xxxxxxxxxxxxxxxxxxxxxxx MENU xxxxxxxxxxxxxxxxxxxxxxxxxxxx
hlavniMenu = Menu(hlavni) #VYTVORENI HL. MENU
menuSoubor = Menu(hlavniMenu, tearoff=0) #polozka soubor
menuSoubor.add_command(label="Konec", command=konec) #polozka v - souboru - ukonci
hlavniMenu.add_cascade(label="Soubor", menu=menuSoubor) #vykresli menu soubor
menuUpravy = Menu(hlavniMenu, tearoff=0)
menuUpravy.add_command(label="Nastaveni COM_portu", command=nastaveniCOM) #polozka k menu nastaveni
hlavniMenu.add_cascade(label="Nastaveni", menu=menuUpravy) #menu nastaveni-prirazeni k hl. menu
hlavni.config(menu=hlavniMenu) #ZOBRAZENI MENU
#xxxxxxxxxxxxxxxxxxxxxxx hlavni okno xxxxxxxxxxxxxxxxxxxxxx
zaskrtavaci = Checkbutton(hlavni, text="COMport je 5", variable=PORTje5, onvalue=1, offvalue=0)
zaskrtavaci.pack()
hlavni.mainloop()
menuNASTAVENI.py
# -*- coding: utf-8 -*-
from Tkinter import *
import tkMessageBox
def nastaveniCOMportu(HLAVNIokno, aktualniPORT, portJE5):
if portJE5 ==1:
aktualniPORT=5
MENUnastaveni=Toplevel(HLAVNIokno)
MENUnastaveni.title(u"Nastaveni COMportu")
nastaveniPORTUcom=LabelFrame(MENUnastaveni, text= "COMport", padx=5, pady=5)
nastaveniPORTUcom.pack(padx=10, pady=10)
ramecekZ1=Frame(nastaveniPORTUcom)
ramecekZ1.pack()
ramecekZ2=Frame(nastaveniPORTUcom)
ramecekZ2.pack()
textAKTUALNIport=Label(ramecekZ1, text="Aktuálni COMport = ", width=23, anchor=W)
textAKTUALNIport.pack(side="left")
zobrazeniAKTUALNIport=Entry(ramecekZ1,width=8,bg="#f5f5dc")
zobrazeniAKTUALNIport.pack()
textNOVYport=Label(ramecekZ2, text="Vybetre nový COMport:", width=23, anchor=W)
textNOVYport.pack(side="left")
OKNOzadavaniNOVYport=Spinbox(ramecekZ2, from_=1, to=20,width=6)
OKNOzadavaniNOVYport.pack()
zadano=Button(MENUnastaveni, text='ok', command=poZMACKNUTIok)
zadano.pack(fill=X)
zobrazeniAKTUALNIport.insert(0, aktualniPORT+1)
MENUnastaveni.mainloop()
def poZMACKNUTIok():
global OKNOzadavaniNOVYport
print "OK"
aktualniPORT=eval(OKNOzadavaniNOVYport.get())
zobrazeniAKTUALNIport.insert(0, aktualniPORT)
if tkMessageBox.showinfo("Ukončení","Zadání bylo uloženo."):
MENUnastaveni.destroy()