Python 为什么不是';我的GUI不工作吗?
我只是想知道我犯了什么错误,这意味着我的GUI不能工作。它的作用是打开一个有3个按钮的窗口,当你点击这些按钮时,它会打开一个新的GUI——显然对于客户注册来说,它会打开一个注册页面。谢谢Python 为什么不是';我的GUI不工作吗?,python,user-interface,tkinter,Python,User Interface,Tkinter,我只是想知道我犯了什么错误,这意味着我的GUI不能工作。它的作用是打开一个有3个按钮的窗口,当你点击这些按钮时,它会打开一个新的GUI——显然对于客户注册来说,它会打开一个注册页面。谢谢 import tkinter as tk class MainWindow: def __init__(self, master): self.master = master self.frame = tk.Frame(self.master) self
import tkinter as tk
class MainWindow:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.button1 = tk.Button(self.frame, text = "Customer login", width = 25, command = self.new_window)
self.button1.pack()
self.button2 = tk.Button(self.frame, text = "Customer register", width = 25, command = self.new_window2)
self.button2.pack()
self.button3 = tk.Button(self.frame, text = "Driver login", width = 25, command = self.new_window3)
self.button3.pack()
self.frame.pack()
def new_window(self):
self.newWindow = tk.Toplevel(self.master)
self.app = Login(self.newWindow)
def new_window2(self):
self.newWindow2 = tk.Toplevel(self.master)
self.app2 = CustReg(self.newWindow2)
def new_window3(self):
self.newWindow3 = tk.Toplevel(self.master)
self.app3 = DriverLog(self.newWindow3)
class Login:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.newL = tk.Label(self.master, text = "username", height = 1, width = 25)
self.newL.pack()
self.newT = tk.Text(self.master, height = 1, width = 25)
self.newT.pack()
self.secL = tk.Label(self.master, text = "Password", height = 1, width = 25)
self.secL.pack()
self.secT = tk.Text(self.master, height = 1, width = 25)
self.secT.pack()
self.quitButton = tk.Button(self.frame, text = 'Log in', width = 25, command = self.master.destroy)
self.quitButton.pack()
self.frame.pack()
class CustReg:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.Label = tk.Label(self.master, text = "Enter your desired username", height = 1, width = 25)
self.Label.pack()
self.TextU = tk.Text(self.master, height = 1, width = 25)
self.TextU.pack()
self.Label2 = tk.Label(self.master, text = "Enter your desired password", height = 1, width = 25)
self.Label2.pack()
self.TextP = tk.Text(self.master, height = 1, width = 25)
self.TextP.pack()
self.Label3 = tk.Label(self.master, text = "Enter your email address", height = 1, width = 25)
self.Label3.pack()
self.TextE = tk.Tex(self.master, height = 1, width = 25)
self.TextE.pack()
self.Label4 = tk.Label(self.master, text = "Enter your pick up address", height = 1, width = 25)
self.Label4.pack()
self.TextPick = tk.Text(self.master, height = 1, width = 25)
self.TextPick.pack()
self.frame.pack()
class DriverLog:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.gg = tk.Button(self.master, text = "Log in", height = 2, width = 25, command = self.master.destroy)
self.gg.pack()
def main():
root = tk.Tk()
app = Login(root)
app2 = CustReg(root)
app3 = DriverLog(root)
root.mainloop()
if __name__ == '__main__':
main()
不确定您想要实现什么,那么main方法中的这段代码呢
def main():
root = tk.Tk()
app = MainWindow(root)
root.mainloop()
它似乎更接近你想要实现的目标。它打开一个窗口,第一个按钮打开登录窗口,第二个按钮打开客户注册窗口,第三个按钮打开另一个登录窗口(驾驶员登录)
完整代码
import tkinter as tk
class MainWindow:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.button1 = tk.Button(self.frame, text = "Customer login", width = 25, command = self.new_window)
self.button1.pack()
self.button2 = tk.Button(self.frame, text = "Customer register", width = 25, command = self.new_window2)
self.button2.pack()
self.button3 = tk.Button(self.frame, text = "Driver login", width = 25, command = self.new_window3)
self.button3.pack()
self.frame.pack()
def new_window(self):
self.newWindow = tk.Toplevel(self.master)
self.app = Login(self.newWindow)
def new_window2(self):
self.newWindow2 = tk.Toplevel(self.master)
self.app2 = CustReg(self.newWindow2)
def new_window3(self):
self.newWindow3 = tk.Toplevel(self.master)
self.app3 = DriverLog(self.newWindow3)
class Login:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.newL = tk.Label(self.master, text = "username", height = 1, width = 25)
self.newL.pack()
self.newT = tk.Text(self.master, height = 1, width = 25)
self.newT.pack()
self.secL = tk.Label(self.master, text = "Password", height = 1, width = 25)
self.secL.pack()
self.secT = tk.Text(self.master, height = 1, width = 25)
self.secT.pack()
self.quitButton = tk.Button(self.frame, text = 'Log in', width = 25, command = self.master.destroy)
self.quitButton.pack()
self.frame.pack()
class CustReg:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.Label = tk.Label(self.master, text = "Enter your desired username", height = 1, width = 25)
self.Label.pack()
self.TextU = tk.Text(self.master, height = 1, width = 25)
self.TextU.pack()
self.Label2 = tk.Label(self.master, text = "Enter your desired password", height = 1, width = 25)
self.Label2.pack()
self.TextP = tk.Text(self.master, height = 1, width = 25)
self.TextP.pack()
self.Label3 = tk.Label(self.master, text = "Enter your email address", height = 1, width = 25)
self.Label3.pack()
self.TextE = tk.Text(self.master, height = 1, width = 25)
self.TextE.pack()
self.Label4 = tk.Label(self.master, text = "Enter your pick up address", height = 1, width = 25)
self.Label4.pack()
self.TextPick = tk.Text(self.master, height = 1, width = 25)
self.TextPick.pack()
self.frame.pack()
class DriverLog:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
self.gg = tk.Button(self.master, text = "Log in", height = 2, width = 25, command = self.master.destroy)
self.gg.pack()
def main():
root = tk.Tk()
app = MainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()
除了应为
tk.Text
的键入tk.Tex
之外,更改将加载注册帐户并登录页面,但不会加载包含所有按钮的主窗口。在第一个窗口中显示的是什么而不是我想显示的是什么?您的问题中的代码当前在做什么?即,它是如何不正常工作的?您希望它做什么?此问题缺少一个问题。你不能只转储一百行代码,然后问“为什么它不能做我期望它做的事情?”首先定义你期望它做的事情,然后构建一个显示你正在经历的行为的最小示例,然后发布这个最小示例。@martineau是它当前正在做的事情,我希望它做的事情高于代码。它只是没有加载第一个窗口(有3个选项),而是加载了CustReg和loginooh,几乎就在那里:D就是现在显示的,我只需要去掉3个按钮下面的部分。我只输入你给我的,没有改变任何东西。对我来说,它只正确显示一个窗口,我发布了完整的代码