因此,我尝试制作这个tkinter GUI,您可以在其中添加或搜索客户(客户存储在SQlite数据库中)。问题是,我看不到一种在按下addcustomer按钮时生成def的方法,因为据我所知,我需要在创建小部件的程序中使用下面的变量名称。我可以切换函数的顺序,但是小部件将调用尚未创建的函数。有人能帮忙解决这个问题吗?提前谢谢
代码如下:
from tkinter import *
app = Tk()
app.minsize(400,420)
app.title("Gatecode Manager")
app.resizable(False, False)
def add():
first = createWindow().firstAdd.get()
last = createWindow().firstAdd.get()
phone = createWindow().numberAdd.get()
def createWindow():
Label(text="Welcome to Gatecode Manager", font=("bold", 17)).grid(row=0, columnspan=2, pady=30, sticky=N)
Label(text="Search for a Customer").grid(row=1, column=0, padx=30, pady=10)
Label(text="First Name:").grid(row=2, column=0, padx=30, pady=10)
firstSearch = Entry().grid(row=3, column=0, padx=30)
Label(text="Last Name:").grid(row=4, column=0, padx=30, pady=10)
lastSearch = Entry().grid(row=5, column=0, padx=30)
Label(text="Add Customer to System").grid(row=1, column=1, padx=30, pady=10)
Label(text="First Name:").grid(row=2, column=1, padx=30, pady=10)
firstAdd = Entry().grid(row=3, column=1, padx=30)
Label(text="Last Name:").grid(row=4, column=1, padx=30, pady=10)
lastAdd = Entry().grid(row=5, column=1, padx=30)
Label(text="Phone Number:").grid(row=6, column=1, padx=30, pady=10)
numberAdd = Entry().grid(row=7, column=1, padx=30)
add = Button(text="Add", command="null").grid(padx=30, pady=10, column=1)
app.mainloop()
createWindow()
我发现很难准确理解您希望这个程序如何运行。
add
按钮是否应该调用函数add()
,然后该函数调用createWindow()
我猜这里有一点,但是关于:
1)不要在函数中创建GUI。函数将使变量保持在函数的作用域内
2)使用StringVar()访问条目。由于您不保存条目的标识,因此无法对其进行查询
例如:
当您的GUI变得更复杂时,您应该学习OOP
相关问题 更多 >
编程相关推荐