我有两份代码,一个登录系统和一个学校申请,我想让它一旦我输入了正确的用户名和密码,我的学校申请就可以出现。我如何将两段代码合并在一起?
from tkinter import*
import tkinter.messagebox as messagebox
root=Tk()
root.geometry("600x300")
root.configure(bg='#003e53')
title=Label(root,text="Login", fg="white", bg="#003e53" ,font=("bold",15))
title.place(x=200, y=30)
uname=Label(root,text="User Name",fg="white",bg="#003e53",font=("bold",15))
uname.place(x=100,y=80)
password=Label(root,text="Password",fg="white",bg="#003e53",font=("bold",15))
password.place(x=100,y=110)
t_uname=Entry()
t_uname.place(x=200,y=80)
t_pwd=Entry()
t_pwd.place(x=200,y=110)
def validate_creds():
uname=t_uname.get()
password=t_pwd.get()
if uname=="Supermarket" and password=="Password1":
messagebox.showinfo(uname,"logged successfully")
else:
messagebox.showinfo(uname,"wrong credentials Mate")
submit=Button(root,text="Submit", command=validate_creds)
submit.place(x=200,y=140)
root.mainloop()
答案 0 :(得分:0)
如果你想从另一个文件调用学校应用程序,你可以创建一个函数,在成功登录后,关闭当前的 Tkinter 窗口并使用模块 os 启动包含学校应用程序的文件。 (另外,import *
不是一个好习惯)
import os
#opening a file through the system
os.system("fily.py" "argument1")
至于合并两段代码,做两个不同的类,就这么简单!
from tkinter import *
class window1:
def __init__(self):
self.root=Tk()
self.root.geometry("600x300")
def window(self):
button = Button(self.root, text="Press to close window", command=self.closewindow)
button.pack()
self.root.mainloop()
def closewindow(self):
self.root.destroy()
class window2:
def __init__(self):
self.root=Tk()
self.root.geometry("600x300")
def window(self):
title=Label(self.root,text="Hey this is a new window!", fg="white", bg="#003e53" ,font=("bold",15))
title.place(x=200, y=30)
self.root.mainloop()
def closewindow(self):
self.root.destroy()
tkinter1 = window1()
tkinter1.window()
tkinter2 = window2()
tkinter2.window()
更重要的是,您可以在window2
类中初始化window1
类并制作一个函数来替换self.closewindow
以关闭窗口并打开新窗口
答案 1 :(得分:0)
继承 tk.Tk
类并添加您的代码,如下所示。
import tkinter.messagebox as ms_box
import tkinter as tk
log_data = {
'Supermarket': 'Password1',
'user_2': '1234'
}
class Window(tk.Tk):
@staticmethod
def login_callback(user, passw):
ms_box.showinfo('Success', user + " logged successfully")
def frame_login_validate(self):
user = self.username_entry.get()
passw = self.password_entry.get()
if user in log_data:
if log_data[user] == passw:
self.login_callback(user, passw)
self.quit()
else:
if user:
ms_box.showerror('Error', user + " wrong credentials")
else:
ms_box.showerror('Error', 'No username added')
def frame_login(self):
tk.Label(self.log_f, text="Login", fg="white", bg="#003e53", font=("bold", 12)).place(x=200, y=30)
tk.Label(self.log_f, text="User Name", fg="white", bg="#003e53", font=("bold", 12)).place(x=100, y=80)
tk.Label(self.log_f, text="Password", fg="white", bg="#003e53", font=("bold", 12)).place(x=100, y=110)
self.username_entry = tk.Entry(self.log_f)
self.username_entry.place(x=200, y=80)
self.password_entry = tk.Entry(self.log_f)
self.password_entry.place(x=200, y=110)
tk.Button(self.log_f, text="Submit", command=self.frame_login_validate).place(x=200, y=140)
def __init__(self):
tk.Tk.__init__(self)
self.geometry('600x300')
self.username = None
self.username_entry = None
self.password = None
self.password_entry = None
self.log_f = tk.Frame(master=self)
self.log_f.configure(bg='#003e53')
self.log_f.pack(fill=tk.BOTH, expand=True)
self.frame_login()
if __name__ == '__main__':
window = Window()
window.mainloop()