Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么不是';我的GUI不工作吗?_Python_User Interface_Tkinter - Fatal编程技术网

Python 为什么不是';我的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

我只是想知道我犯了什么错误,这意味着我的GUI不能工作。它的作用是打开一个有3个按钮的窗口,当你点击这些按钮时,它会打开一个新的GUI——显然对于客户注册来说,它会打开一个注册页面。谢谢

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个按钮下面的部分。我只输入你给我的,没有改变任何东西。对我来说,它只正确显示一个窗口,我发布了完整的代码