2017-10-03 4 views
1

私が作成したエントリポイントに入力された値を返す問題が少しありましたが、その理由はわかりません。tkinterの値を返す

class DbGui: 
    def __init__(self, master): 
     self.master = master 
     self.label = ttk.Label(master, text="Tkinter DB File-r") 
     self.label.grid(row=0, column=0, columnspan=2) 
     ttk.Button(master, text="Connect", command=self.connect).grid(row=1, column=0) 
     ttk.Button(master, text="Disconnect", command=self.disconnect).grid(row=1, column=1) 
     ttk.Button(master, text="Submit", command=self.tk_submit).grid(row=1, column=2) 
     ttk.Button(master, text="Exit", command=self.tk_exit).grid(row=6, column=3) 

    def show_inputs(self): 
     # Name 
     ttk.Label(self.master, text="Name").grid(row=2, column=0) 
     name = ttk.Entry(self.master).grid(row=2, column=1) 

     # Date 
     ttk.Label(self.master, text="Date").grid(row=3, column=0) 
     date = ttk.Entry(self.master).grid(row=3, column=1) 
     # Value 
     ttk.Label(self.master, text="Value").grid(row=4, column=0) 
     value = ttk.Entry(self.master).grid(row=4, column=1) 
     return name, date, value 

    def tk_submit(self): 
     print(name.get()) # This is where I think the problem is. 

def main(): 
    root = Tk() 
    app = DbGui(root) 
    app.show_inputs() 
    root.mainloop() 


if __name__ == '__main__': 
    main() 

ユーザーが変数やリストなどを実際に入力すると、これらの値をどのように取得できますか。私はVERY tkinterに新しいですので、助言や助けをいただければ幸いです。

self.name = ttk.Entry(self.master) 
self.name.grid(row=2, column=1) 

とを: -

+2

(https://stackoverflow.com/q/6933572/953482)[なぜなしtkinter.Entryオブジェクトの代わりに返されません]の可能性のある重複。短い答え:あなたのウィジェットを作成し、2つの別々の行に 'grid'を呼び出します。 – Kevin

答えて

3

あなたは(感謝@MikeSMTをgridNoneを返さない)別の行にself.name上(self.で始まる)クラスの属性、およびコール・グリッドとして、あなたの変数nameを初期化する必要がありますそのように呼ん:

def tk_submit(self): 
    print(self.name.get()) 
+3

これは動作しません。グリッドを別の行に宣言する必要があります。 –

+1

ありがとうマイク、私はあなたが投稿したと同時にそれを見た - 訂正した。 –

+0

あなたはそれが最終的にそれに気付くだろうと考えました。私のコメントはちょうどその時でした。 :) –

関連する問題