Sida 1 av 1

Python Button enable/disable? *LÖST*

Postat: 19 september 2022, 11:19:16
av Icecap
Jag har gjort ett program som förenklar en funktion jag ska utföra då o då fram till vi får en leverans som ger mig möjlighet att bygga en automatiserat funktion.

Python 3.10.4

Jag har skapat ett fönster med några knappar på.

Kod: Markera allt

window = tk.Tk()
window.geometry('380x600')
window.title('DS Manual 4-20mA Trim')
window.resizable(False, False)
btn_Start = tk.Button(window, text = 'Start', width = 7, font = fnt.Font(size = 16), command = Start_Test, state = NORMAL).pack(pady = 7) 
btn_Next  = tk.Button(window, text = 'Next',  width = 7, font = fnt.Font(size = 16), command = Next_Test , state = DISABLED).pack(pady = 7)
btn_Up    = tk.Button(window, text = 'Up',    width = 7, font = fnt.Font(size = 16), command = Up_Test   , state = DISABLED).pack(pady = 7)
btn_Down  = tk.Button(window, text = 'Down',  width = 7, font = fnt.Font(size = 16), command = Down_Test , state = DISABLED).pack(pady = 7)
btn_Stop  = tk.Button(window, text = 'Stop',  width = 7, font = fnt.Font(size = 16), command = Stop_Test , state = DISABLED).pack(pady = 7)
txt = tk.Text(window, height = 10, width = 40)
txt.config(state = NORMAL)
txt.pack(expand = True)
window.mainloop()
Jag behöver att disable/enable knapparna eftersom testen stegar framåt och jag gör då:

Kod: Markera allt

def Start_Test():
    global btn_Start
    global btn_Next
    global btn_Up
    global btn_Down
    global btn_Stop
    ... lite småsaker
    btn_Start['state'] = tk.DISABLED # RAD 136
    btn_Next ['state'] = tk.NORMAL
    btn_Up   ['state'] = tk.DISABLED
    btn_Down ['state'] = tk.DISABLED
    btn_Stop ['state'] = tk.NORMAL
Felmeddelande:
File "C:\Users\Torsten\AppData\Local\Programs\Python\Python310\DS Manual trim.py", line 136, in Start_Test
btn_Start['state'] = tk.DISABLED
TypeError: 'NoneType' object does not support item assignment

Jag har testat med <btn_Start['state'] = DISABLED> utan skillnad.

Om jag INTE utför denna disable/enable fungerar allt som planerat.

Jag har testat att deklarera alla knapparna som globala i starten av programmet men samma fel.
Vad tusan gör jag fel?

Jag gör exakt som det står när jag googlar "python button enable".

Re: Python Button enable/disable?

Postat: 19 september 2022, 12:11:18
av H.O
Är det möjligen så enkelt som det faktum att DISABLED != disabled?

Har du provat

Kod: Markera allt

btn_Start['state'] = "disabled"
EDIT:
Eller

Kod: Markera allt

btn_Start.config(state='disabled')

Re: Python Button enable/disable?

Postat: 19 september 2022, 14:10:01
av Icecap
Hmmm - det ska prövas. Det sker på onsdag om jag inte gör ett litet testcase här hemma.

Re: Python Button enable/disable?

Postat: 19 september 2022, 21:12:03
av Icecap
Testade hemma (Linux Mint med Python 3.8) och kom fram till följande:
Jag definierade knapparna OCH packade dom i samma rad.

Det fungerade inte.

Men om jag definierar dom alla först och packar dom EFTERÅT fungerar det strålande.