当从tkinter中的file1按下按钮时,如何跳转/执行file2

问题描述 投票:-1回答:1

我有2个python文件File1和File2,它们在tkinter中编码。

文件1是Welcome page有1个按钮登录为医生。

文件2是login page,医生将在其中输入他/她的凭证。这两个文件都在tkinter中编码

运行: -

  1. 欢迎文件(文件1)将以GUI FORM格式运行
  2. 当按下文件1上的按钮时,应将其重定向到登录页面(文件2)

注意:-

这两个文件都不同。

文件1 Welcome.py

#import modules
from tkinter import *
import random
from tkinter import messagebox
import importlib
# creating the object
root = Tk()

# resolution of the window
root.geometry("500x540+500+100")
root.title ("ABC HOSPITAL")

# preventing the resize feature
root.resizable(False, False)
def doc():
    importlib.import_module('login')

#LABELS=====================================================
heading = Label(font=('times new roman' , 25 , 'bold'), text="WELCOME TO ABC HOSPITAL", fg='black', bg='#fbf9d3')
heading.place(x=3, y=10)

heading = Label(font=('times new roman' , 22 , 'bold'), text="Choose Login", fg='black', bg='#fbf9d3')
heading.place(x=150, y=250)
#button to perform a command=======================================================
login = Button(font=('arial' , 20 , 'bold'),bd=14, text="DOCTOR's LOGIN", fg='white',bg='#04062c',width=27,height=2)
login.place(x=4,y=300)

root.mainloop()                             

文件2 login.py

#import modules
from tkinter import *
import mysql.connector
from mysql.connector import errorcode
import random
from tkinter import messagebox

# creating the object
root = Tk()

# resolution of the window
root.geometry("1520x790+0+0")
root.title ("ABC HOSPITAL")
root.iconbitmap('hospital.ico')

# preventing the resize feature
root.resizable(False, False)

#tkinter window
class Application:

#funtion for main frames=====================================================================================================================================================================

    def __init__(self, master):
        self.master = master

        # creating the frames in the master
        self.left = Frame(master, width= 1600, height= 900, bg='lightblue',relief=SUNKEN)
        self.left.pack(side=TOP)

        #Background Picture
        self.photo1 = PhotoImage(file='background.png')
        self.pic = Label(self.left, font=('arial' , 1 , 'bold'), image= self.photo1)
        self.pic.place(x=0, y=0)


#LABELS=====================================================
        self.heading = Label(self.left,font=('arial' , 50 , 'bold'), text="ABC Hospital", fg='black', bg='#06378b' ,anchor='w')
        self.heading.place(x=550, y=0)

        #Login Picture
        self.photo = PhotoImage(file= 'login.png')
        self.pic = Label(self.left, font=('arial' , 40 , 'bold'), image= self.photo ,fg = "lightblue", bg='#06378b')
        self.pic.place(x=640, y=100)

        # user name
        self.username = Label(self.left, text="Username", font=('arial 30 bold'), fg='black', bg='#063998')
        self.username.place(x=550, y=350)

        # password
        self.password = Label(self.left, text="Password", font=('arial 30 bold'), fg='black', bg='#063998')
        self.password.place(x=550, y=410)

#TEXTBOX=====================================================
        #username
        self.username_ent = Entry(self.left,font=('arial' , 20 , 'bold'))
        self.username_ent.place(x=750, y=360)

        #password
        self.password_ent = Entry(self.left, font=('arial' , 20 , 'bold'),show='*')
        self.password_ent.place(x=750, y=420)

# button to perform a command================================
        #button1
        self.login = Button(self.left,font=('arial' , 20 , 'bold'), text="LOGIN", bg='steelblue')
        self.login.place(x=700, y=480)

b = Application(root)                      
root.mainloop()                             

来自欢迎页面的按钮按下登录页面应以gui形式执行

PLZ帮助我有一个大学迷你项目,但我被困在这里....

python python-3.x tkinter gtk tk
1个回答
1
投票
  1. 这绝对不是从主窗口打开第二个窗口的正确方法。在Tkinter中,如果你需要额外的窗口我们使用Toplevel()而不是使用另一个Tk(),虽然它可以工作,但不是推荐的方法。
  2. 你在这里不需要importlib,它可以很容易地完成而不使用它。 就像你可以在你的主文件中的file.py,import file中定义一个函数,然后按下你的文件1中的按钮来调用file.Run_login 例: 档案2 def Run_Login(): # creating the object root = Toplevel() # resolution of the window root.geometry("1520x790+0+0") root.title ("ABC HOSPITAL") # root.iconbitmap('hospital.ico') # preventing the resize feature root.resizable(False, False) Application(root) 文件2: import file def doc(): file.Run_Login(master=root)
  3. 在Application类中继承Toplevel将使您的工作变得更加容易,因为您可以在File 1 from file import Application中导入该类。然后在doc中你可以调用它。 例: def doc(): A = Application(master = root)

完整代码

文件1 - Window.py

#import modules
from tkinter import *
import random
from tkinter import messagebox

# Make sure you import name is same as the file name.
from login import Application

# creating the object
root = Tk()

# resolution of the window
root.geometry("500x540+500+100")
root.title ("ABC HOSPITAL")

# preventing the resize feature
root.resizable(False, False)

def doc():
    App = Application(root)

#LABELS=====================================================
heading = Label(font=('times new roman' , 25 , 'bold'), text="WELCOME TO ABC HOSPITAL", fg='black', bg='#fbf9d3')
heading.place(x=3, y=10)

heading = Label(font=('times new roman' , 22 , 'bold'), text="Choose Login", fg='black', bg='#fbf9d3')
heading.place(x=150, y=250)
#button to perform a command=======================================================
login = Button(font=('arial' , 20 , 'bold'),bd=14, text="DOCTOR's LOGIN", 
        fg='white',bg='#04062c',width=27,height=2, command=doc)
login.place(x=4,y=300)

mainloop() 

文件2 - login.py

#import modules
from tkinter import *
import mysql.connector
from mysql.connector import errorcode
import random
from tkinter import messagebox


#tkinter window
class Application(Toplevel):

#funtion for main frames=====================================================================================================================================================================

    def __init__(self, master=None):
        Toplevel.__init__(self, master)
        # resolution of the window
        self.geometry("1520x790+0+0")
        self.title ("ABC HOSPITAL")
        self.iconbitmap('hospital.ico')

        # preventing the resize feature
        self.resizable(False, False)

        # creating the frames in the master
        self.left = Frame(self, width= 1600, height= 900, bg='lightblue',relief=SUNKEN)
        self.left.pack(side=TOP)

        #Background Picture
        self.photo1 = PhotoImage(file='background.png')
        self.pic = Label(self.left, font=('arial' , 1 , 'bold'), image= self.photo1)
        self.pic.place(x=0, y=0)


#LABELS=====================================================
        self.heading = Label(self.left,font=('arial' , 50 , 'bold'), text="ABC Hospital", fg='black', bg='#06378b' ,anchor='w')
        self.heading.place(x=550, y=0)

        #Login Picture
        self.photo = PhotoImage(file= 'login.png')
        self.pic = Label(self.left, font=('arial' , 40 , 'bold'), image= self.photo ,fg = "lightblue", bg='#06378b')
        self.pic.place(x=640, y=100)

        # user name
        self.username = Label(self.left, text="Username", font=('arial 30 bold'), fg='black', bg='#063998')
        self.username.place(x=550, y=350)

        # password
        self.password = Label(self.left, text="Password", font=('arial 30 bold'), fg='black', bg='#063998')
        self.password.place(x=550, y=410)

#TEXTBOX=====================================================
        #username
        self.username_ent = Entry(self.left,font=('arial' , 20 , 'bold'))
        self.username_ent.place(x=750, y=360)

        #password
        self.password_ent = Entry(self.left, font=('arial' , 20 , 'bold'),show='*')
        self.password_ent.place(x=750, y=420)

# button to perform a command================================
        #button1
        self.login = Button(self.left,font=('arial' , 20 , 'bold'), text="LOGIN", bg='steelblue')
        self.login.place(x=700, y=480)


if __name__ == "__main__":    
     # Only runs when you run login.py if you import this file whatever after this if statement will not run.
     Application().mainloop()

我希望这能解决你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.