【问题标题】:How to call one window to another using python tkinter如何使用 python tkinter 将一个窗口调用到另一个窗口
【发布时间】:2020-12-31 04:49:38
【问题描述】:

我使用 python 创建简单的登录表单。如果用户名和密码正确,它应该重定向到主表单。但我不知道如何调用第二种形式。我有两页如何调用 main.py 我在我目前尝试过的下面附加了代码

Login.py

from tkinter import *
from tkinter import messagebox
        
        
def Ok():
     uname = e1.get()
     password = e2.get()
        
     if(uname == "" and password == "") :
           messagebox.showinfo("", "Blank Not allowed")
        
        
     elif(uname == "Admin" and password == "123"):        
           messagebox.showinfo("","Login Success")
           root.destroy()
        
     else :
           messagebox.showinfo("","Incorrent Username and Password")
root = Tk()
root.title("Login")
root.geometry("300x200")
global e1
global e2
        
Label(root, text="UserName").place(x=10, y=10)
Label(root, text="Password").place(x=10, y=40)
        
e1 = Entry(root)
e1.place(x=140, y=10)
        
e2 = Entry(root)
e2.place(x=140, y=40)
e2.config(show="*")
        
        
Button(root, text="Login", command=Ok ,height = 3, width = 13).place(x=10, y=100)
        
root.mainloop()

Main.py

from tkinter import *
from tkinter import messagebox

root = Tk()
root.title("Main")
root.geometry("500x500")
global e1
global e2

Label(root, text="Welcome").place(x=10, y=10)

root.mainloop()

【问题讨论】:

  • 是的。我们不能叫两页。我们设计的同一个页面登录主菜单也是为了调用。
  • 您可以在另一个文件中导入一个文件
  • 如何导入文件我不知道请添加代码
  • 这能回答你的问题吗? How can I make one python file run another?,请不要将您的文件称为main.py

标签: python tkinter


【解决方案1】:

Login.py

import os
from tkinter import *
from tkinter import messagebox

global e1
global e2

root = Tk()
root.title("Login")
root.geometry("300x200")

def Ok():
    global e1, e2
    uname = e1.get()
    password = e2.get()

    if(uname == "" and password == "") :
        messagebox.showinfo("", "Blank Not allowed")
        return False


    elif(uname == "Admin" and password == "123"):

        messagebox.showinfo("","Login Success")
        os.system("python3 main.py")
        root.destroy()

        return True

    else :
        messagebox.showinfo("","Incorrent Username and Password")
        return False

Label(root, text="UserName").place(x=10, y=10)
Label(root, text="Password").place(x=10, y=40)
Button(root, text="Login", command=Ok,height = 3, width = 13).place(x=10, y=100)

while True:


    global e1, e2
    e1 = Entry(root)
    e1.place(x=140, y=10)

    e2 = Entry(root)
    e2.place(x=140, y=40)
    e2.config(show="*")

    if Ok():
        os.system("python3 main_kinter.py")
        break

    root.mainloop()

` 和主文件:

from tkinter import *
from tkinter import messagebox

root = Tk()
root.title("Main")
root.geometry("500x500")
global e1
global e2

Label(root, text="Welcome").place(x=10, y=10)

root.mainloop()

【讨论】:

  • 如前所述,这不是一个非常安全的方法。
【解决方案2】:

这是关于如何进行的方法之一的答案。通过将文件导入另一个文件。

ma​​in.py:

from tkinter import *
from tkinter import messagebox
import login

login.everything()

root = Tk()
root.title("Main")
root.geometry("500x500")

Label(root, text="Welcome").place(x=10, y=10)

root.mainloop()

login.py:

from tkinter import *
from tkinter import messagebox

def everything():
    def Ok():
        uname = e1.get()
        password = e2.get()

        if(uname == "" and password == "") :
            messagebox.showinfo("", "Blank Not allowed")


        elif(uname == "Admin" and password == "123"):

            messagebox.showinfo("","Login Success")
            top.destroy()
            main.destroy()

        else :
            messagebox.showinfo("","Incorrent Username and Password")
    main = Tk()
    main.withdraw()
    top = Toplevel()
    top.title("Login")
    top.geometry("300x200")

    Label(top, text="UserName").place(x=10, y=10)
    Label(top, text="Password").place(x=10, y=40)

    e1 = Entry(top)
    e1.place(x=140, y=10)

    e2 = Entry(top)
    e2.place(x=140, y=40)
    e2.config(show="*")


    Button(top, text="Login", command=Ok ,height = 3, width = 13).place(x=10, y=100)
    top.mainloop()

希望您有想法,如果有任何错误或疑问,请告诉我。

干杯

【讨论】: