2017-02-14 13 views
0

私は小さなTkinterプログラムで作業しています。一度起動すると、名前を入力するよう促し、送信をクリックすると "Welcome to my world"と表示されます。入力を取得して新しいウィンドウに表示するか、新しい情報でウィンドウを更新することに問題がありますが、エントリ名としてPy_Var1が表示されます。新しいウィンドウで情報を表示しようとしているか、関数を間違って使用しているからですか?tkinterディスプレイを更新または再設定する

は、ここで私は、問題は、あなたがそれはTkinterのを行うことができない破壊された後、あなたが窓を破壊する前に割り当てられた変数にアクセスしようとしていたということだったと思う私のコード

from tkinter import * 

root = Tk() 

#Functions 

def info(): 
    a= entry_1.get() 


def close_window(root): 
     root.destroy() 
def comb(event=None): 
     info() 
     close_window(root) 



#Display 
input_1 = Label(root, text=" Name: ", bg= "light grey", fg="blue", font=("Arial", 16)) 
entry_1 = Entry(root, bg= "white", fg= "black", bd= 5, relief= SUNKEN, font=("Arial", 12)) 
button = Button(root, text="Submit", command=comb, bd= 6, relief= RAISED, fg='blue', font=("Arial", 12)) 
root.bind("<Return>", comb) 

aVar = StringVar(entry_1.get()) 
aVar.set(aVar) 
#entry display 
input_1.grid(row=1, sticky=E) 
entry_1.grid(row=1, column=1) 
button.grid(row=3, column=1) 

root.mainloop() 
##Second Window 
root = Tk() 

Var = StringVar() 
Var.set(info) 

t1 = Label(root, text="Welcome") 
t2 = Label(root, text= Var) 
t3 = Label(root, text="to my world") 

#Display 

t1.grid(row=1, column=1) 
t2.grid(row=1, column=2) 
t3.grid(row=1, column=3) 

root.mainloop() 
+0

このサイトで 'PY_VAR1'を検索してみてください –

+0

[PY \ _VAR0またはPY \ _VAR1を使用してエントリ値を取得するにはどうすればよいですか?](http://stackoverflow.com/questions/23986010/how-to-get- entry-value-using-py-var0-or-py-var1) – zanussi

答えて

0

です。グローバル変数が必要です。あなたのコードは今動作するはずです。

from tkinter import * 

root = Tk() 

#Functions 

def info(): 
    global a 
    a= entry_1.get() 


def close_window(root): 
     root.destroy() 
def comb(event=None): 
     info() 
     close_window(root) 



#Display 
input_1 = Label(root, text=" Name: ", bg= "light grey", fg="blue", font=("Arial", 16)) 
entry_1 = Entry(root, bg= "white", fg= "black", bd= 5, relief= SUNKEN, font=("Arial", 12)) 
button = Button(root, text="Submit", command=comb, bd= 6, relief= RAISED, fg='blue', font=("Arial", 12)) 
root.bind("<Return>", comb) 


#entry display 
input_1.grid(row=1, sticky=E) 
entry_1.grid(row=1, column=1) 
button.grid(row=3, column=1) 

root.mainloop() 
##Second Window 
root = Tk() 

t1 = Label(root, text="Welcome "+str(a)+" to my world") 
##t2 = Label(root, text= Var) 
##t3 = Label(root, text="to my world") # cleaner this way 

#Display 

t1.grid(row=1, column=1) 
#t2.grid(row=1, column=2) 
#t3.grid(row=1, column=3) 

root.mainloop() 
0

エラーが多く論理がないため実行されていません。 理由なしで多くの関数を使用し、いずれも値を返さない関数です。 また、ルートウインドウを閉じているエントリウィジェットを破棄した後、何も返さない関数を使って破棄したエントリからテキストを取得するように求めているのは です。ルートウィンドウを破棄せずにトップレベルウィンドウを使用しても、関数は何も返さないため、このプログラムは機能しません。

機能の基本的な使い方を理解していないようです。より複雑なものを試す前に、簡単なプログラムで関数を使って遊ぶことを考えてください。

関連する問題