在 tkinter 中从 file1 按下按钮时如何跳转 run/execute file2
How jump run/execute file2 when a button is pressed from file1 in tkinter
我有 2 python 个文件 文件 1 和文件 2 其中在 tkinter 中编码。
文件 1 Welcome page
有 1 个按钮 Login as doctor。
文件 2 是医生将在其中输入 his/her 凭据的 login page
。
这两个文件都在 tkinter
中编码
Running:-
- 欢迎文件(文件 1)将 运行 以 GUI FORM
- 当在文件 1 上按下按钮时,它应该被重定向到
登录页面(文件 2)
Note:-
两个文件不同。
File 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()
File 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形式执行
请帮助我有一个大学迷你项目,但我被困在这里....
这绝对不是从主 window 打开第二个 window 的正确方法。在 Tkinter 中,如果您需要添加 windows,我们使用 Toplevel()
而不是使用另一个 Tk()
,尽管它可以工作,但不是推荐的方法。
这里不需要importlib
,不用它也能轻松搞定。
就像您可以在主文件的 file.py、import file
中定义一个函数,然后通过 file.Run_login
[=21 在文件 1 中按一个按钮调用它=]
示例:
文件 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)
同时在您的应用程序中继承 Toplevel class 将使您的工作更轻松,因为这样您就可以在文件 1 from file import Application
中导入 class .然后在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()
希望这能解决您的问题。
我有 2 python 个文件 文件 1 和文件 2 其中在 tkinter 中编码。
文件 1 Welcome page
有 1 个按钮 Login as doctor。
文件 2 是医生将在其中输入 his/her 凭据的 login page
。
这两个文件都在 tkinter
Running:-
- 欢迎文件(文件 1)将 运行 以 GUI FORM
- 当在文件 1 上按下按钮时,它应该被重定向到 登录页面(文件 2)
Note:-
两个文件不同。
File 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()
File 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形式执行
请帮助我有一个大学迷你项目,但我被困在这里....
这绝对不是从主 window 打开第二个 window 的正确方法。在 Tkinter 中,如果您需要添加 windows,我们使用
Toplevel()
而不是使用另一个Tk()
,尽管它可以工作,但不是推荐的方法。这里不需要
importlib
,不用它也能轻松搞定。就像您可以在主文件的 file.py、
import file
中定义一个函数,然后通过file.Run_login
[=21 在文件 1 中按一个按钮调用它=]示例:
文件 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)
同时在您的应用程序中继承 Toplevel class 将使您的工作更轻松,因为这样您就可以在文件 1
from file import Application
中导入 class .然后在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()
希望这能解决您的问题。