Sehen Sie sich den folgenden Beispielcode an. Es gibt ein Hauptfenster, das die Funktion fun2
aufruft, um den Wert der Variablen a
anzuzeigen (als Beschriftung mit Text). Gleichzeitig öffnet ein Menüeintrag im Hauptfenster ein zweites Fenster (Funktion fun1
) mit zwei Tasten. Ich versuche, einen Weg zu finden, um den Wert von a
durch diese Tasten zu ändern.Problem mit der Aktualisierung globaler/lokaler Variablen
Wenn ich die globale Variable a = 0
(Zeile 6) nicht einschließen, erhalte ich einen "globalen Namen 'a' ist nicht definiert" Fehler. Wenn ich es (wie in diesem Beispiel) einschließe, haben die Fensterschaltflächen keine Auswirkung auf die Variable (es bleibt a = 0
). Ich habe versucht, den Befehl global a
in fun1
ohne Wirkung zu verwenden. Ich habe auch experimentiert mit dem gleichen Befehl auch in fun2
, aber ich kann immer noch nicht zur Arbeit.
Irgendwelche Ideen? Was mache ich falsch?
import Tkinter
import random
import time
from Tkinter import *
a = 0
def fun1():
win2 = Toplevel()
win2.geometry("300x300")
def var_yes():
a = 1
win2.after(500, lambda: win2.destroy())
def var_no():
a = 0
win2.after(500, lambda: win2.destroy())
button1 = Tkinter.Button(win2, text ="1", command = var_yes).pack()
button2 = Tkinter.Button(win2, text ="2", command = var_no).pack()
def fun2():
value = 0
if a == 1:
value = a
granresult = "{}".format(value)
lbl.configure(text = str(granresult))
def gui_stuff(window):
global lbl
window.configure(background="#000000")
window.geometry("700x500")
lbl = Tkinter.Label(window, height=5, anchor = "c", text="Label", bg="#000000", fg="#ffffff", font=("Helvetica", 22))
lbl.pack()
fun2()
window = Tkinter.Tk()
menubar = Menu(window)
filemenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Program", menu=filemenu)
filemenu.add_command(label="test", command=fun1)
window.config(menu=menubar)
gui_stuff(window)
window.update()
winx1 = window.winfo_rootx()
winy1 = window.winfo_rooty()
winh1 = window.winfo_height()
window.mainloop()
Saubere, präzise, einfach zu implementierende Lösung. Perfekt! –