2017-11-24 1 views
-2

Ich versuche, eine Reihe von Schaltflächen, die den Wert meiner globalen Variable "y" ändern. Ich bin ziemlich neu bei Python und bin sehr neu bei Tkinter. Ich habe versucht, Lambda und Lösungen in ähnlichen Fragen zu verwenden schien nicht das Problem zu beheben.Argumente in Button-Befehl zu ändern globalen Variablenwert python tkinter

Hier ist mein Code:

import tkinter as tk 
from tkinter import * 


master=Tk() 

def assignint(value): 
    global y 
    y = value 

y= StringVar() 

frame = Frame(master) 
frame.grid(row=0, columnspan=4) 
for i in range(2): 
    Grid.rowconfigure(master,i,weight=1) 
for i in range(4): 
    Grid.columnconfigure(master,i,weight=1) 

Button1 = Button(master,text='Fault1',command= lambda: assignint(0)) 
Button1.grid(row=1, column=0,sticky=N+S+E+W) 


Button2 = Button(master,text='Fault2',command= lambda: assignint(1)) 
Button2.grid(row=1, column=1,sticky=N+S+E+W) 


Button3 = Button(master,text='Fault3',command= lambda: assignint(2)) 
Button3.grid(row=1, column=2,sticky=N+S+E+W) 


Button4= Button(master,text='Fault4',command= lambda: assignint(3)) 
Button4.grid(row=1, column=3,sticky=N+S+E+W) 

if y.get()!='': 
    print('The value of y is:', y.get()) 

mainloop() 
+0

für print-Anweisung Ihr Zustand ausgeführt wird, bevor die Bedingung eine Chance, um wahr zu sein hat. – Nae

+0

Gerade versucht, die if-Anweisung zu entfernen und das Problem ist immer noch gleich, der Wert von y bleibt leer – Jkind9

+0

'y' ist leer, weil' print' ausgeführt wird, bevor Sie eine Chance haben, den Wert zu ändern. Wie in Es läuft kurz bevor Ihre GUI angezeigt wird. – Nae

Antwort

2

Sie benötigen set Methode zu verwenden, wenn ein StringVar ‚s-Wert zu verändern.

wie in ersetzen:

y = value 

mit:

y.set(value) 
+0

Das macht keinen Unterschied, immer noch nicht die print-Anweisung funktioniert. – Jkind9

+0

@ Jkind9 Versuchen Sie es in eine andere Schaltfläche für einen späteren Aufruf zu setzen. In seinem aktuellen Zustand läuft es nur einmal und das ist, wenn die Bedingung falsch ist. – Nae

+0

Das funktioniert, vielen Dank. – Jkind9

Verwandte Themen