2017-11-24 19 views
-2

グローバル変数 "y"の値を変更するボタンのセットを取得しようとしています。私はPythonにはかなり新しいので、tkinterにはとても新しいです。ラムダを使用しようとしましたが、同様の質問の解決策は問題を解決していないようです。 StringVarの値を変更するときは、setメソッドを使用する必要がグローバル変数値を変更するボタンコマンドの引数python tkinter

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

条件が真になるチャンスがある前に、print文のためのあなたの条件が実行されます。 – Nae

+0

ifステートメントを削除しようとしましたが、問題は同じですが、yの値は空白のままです。 – Jkind9

+0

'y'は空白です。値を変更する前に' print'が実行されています。あなたのGUIが表示される直前に実行されます。 – Nae

答えて

2

は、ここに私のコードです。

などで置き換える:

y = value 

で:

y.set(value) 
+0

それでも、printステートメントがうまく動作しないという違いはありません。 – Jkind9

+0

@ Jkind9後の呼び出しのために別のボタンに入れてみてください。現在の状態では1回だけ実行され、条件がFalseのときに実行されます。 – Nae

+0

それは働いている、非常にありがとう。 – Jkind9

関連する問題