-1
入口存儲輸入我試圖搜索如何從使用TK的輸入保存變量,但我找不到任何方式來做到這一點。tk:從變量
這是我使用的代碼更清潔的版本:
from tkinter import *
from tkinter import ttk
main=Tk()
main.title("Test")
book = []
class test1:
def __init__(self):
self.name = ""
self.tel = ""
new1 = test1()
def salva(argm):
argm.name = str(nome.get())
argm.tel = str(telefono.get())
def nuovo_ordine():
tutto = Toplevel()
scheda = ttk.Frame(tutto,padding="10 10 10 10")
scheda.rowconfigure(0, weight=1)
scheda.columnconfigure(0, weight=1)
scheda.grid(column=0,row=0,sticky=(N,W,E,S))
global nome
global telefono
global new1
nome = StringVar()
telefono = StringVar()
ttk.Label(scheda,text="Telefono").grid(column=1,row=2)
ttk.Label(scheda,text="Nome").grid(column=1,row=1)
tel1 = ttk.Entry(scheda,textvariable=telefono).grid(column=2,row=2)
nome1 = ttk.Entry(scheda,textvariable=nome).grid(column=2,row=1)
salva_tasto=Button(scheda,text="Salva",command=salva(new1)).grid(column=1,row=4)
fine_tasto=Button(scheda,text="Fine",command=tutto.destroy).grid(column=3,row=4)
def stampa(argm2):
print (argm2.name)
print (argm2.tel)
dentro = ttk.Frame(main,padding="10 10 10 10")
dentro.rowconfigure(0, weight=1)
dentro.columnconfigure(0, weight=1)
dentro.grid(column=0,row=0,sticky=(N,W,E,S))
nuovo=Button(dentro,text="Aggiungi Ordine", command=nuovo_ordine, width=16).grid(column=1,row=2)
stampa=Button(dentro,text="Stampa Ordini",command=stampa(new1), width=16).grid(column=2,row=3)
chiudi=Button(dentro,text="Chiudi",command=main.destroy, width=16).grid(column=3,row=4)
main.mainloop()
問題是,它似乎像它無法在變量存儲輸入,而如果我嘗試: 打印(telefono.get ()) 我得到正確的值...
在此先感謝!
第一:謝謝你的回答!但是使用lambda沒有幫助,我仍然因打印而變得空白。此外,* args代表什麼? – tanke88
你是否還在'lambda中包裝'command = stampa(new1)'?每個使用圓括號的命令都需要一個lambda。 '* args'是一個[任意參數列表](https://docs.python.org/2/tutorial/controlflow.html#arbitrary-argument-lists)。我把它放進去是因爲我記不清有多少參數在被調用時會傳遞給一個命令,'args'會防止任何「太多參數」錯誤。嘗試一下,你可以簡單地使用'lambda:'而不用'* args'。 – Kevin
是的我嘗試過,我現在得到的是: TypeError:'NoneType'對象不可調用 與stampa(new1)命令相關 與此同時,我注意到沒有lambda,如果我定義self.tel =「aaa」,只要我啓動程序就會打印出來。 – tanke88