python Tkinter() 如何隐藏 UI [英] python Tkinter() how to hide the UI
问题描述
我正在使用 Tkinter() 在 python 中开发单一登录,我只希望当用户正确登录时,登录 UI 将被隐藏,内容 UI 将显示......所以我在想 ui可以隐藏还是可见性将被隐藏?例如我有这个代码...
Hi I am developing a single login in python using Tkinter(), I just only want that when the user Logged in correctly the login UI will be hidden and the content UI will display... so I was thinking that the ui can be hide or the visibility will be hidden? for example I had this code...
def httpGETCheck(username, password):
....
# assumed that the user is correct
if registeredUser:
# how can I hide or set visible is false to all the UI in the showLogin() Module
# and how can I show the showContent() UI or replaced the showContent() UI from showLogin() UI
class ContentUI():
def showContent(self, frame):
button1 = Button(frame, text="+", width=15, command=counterPlus)
button1.grid()
def showLogin(self, frame):
self.contentUI = ContentUI()
L1 = Label(frame, text="User Name")
L1.pack( side = LEFT)
L1.grid()
E1 = Entry(frame, bd =5)
E1.pack(side = RIGHT)
E1.grid()
L2 = Label(frame, text="Password")
L2.pack( side = LEFT)
L2.grid()
E2 = Entry(frame, bd =5, show="*")
E2.pack(side = RIGHT)
E2.grid()
submit = Button(frame, text="Login", width=15, command=lambda: httpGETCheck(E1.get(), E2.get()))
submit.grid()
class UIDisplay():
def play(self):
root = Tk()
root.title(title)
root.geometry(dimension)
app = Frame(root)
contentUI = ContentUI()
contentUI.showLogin(app)
app.grid()
root.mainloop()
ad = UIDisplay()
ad.play()
推荐答案
这里有一个替代方案:定义框架中的每个页面".然后使用对 lift
的调用将适当的 Frame 提升到其他框架之上.(以下代码大量借鉴了 Bryan Oakley 的代码此处.)
Here is an alternative: Define each "page" in a Frame. Then use calls to lift
to raise the appropriate Frame above the others. (The following code borrows heavily from Bryan Oakley's code here.)
import tkinter as tk
class Page(tk.Frame):
def __init__(self, master, text, height, width, *args, **kwargs):
tk.Frame.__init__(self, *args, borderwidth=20, **kwargs)
self.height = height
self.width = width
button = tk.Button(self, text=text, font=('Comic Sans MS', 20),
command=lambda: self.callback())
button.pack(side="top", fill="both", expand=True)
def onlift(self):
root.geometry('{}x{}'.format(self.width, self.height))
self.lift()
class App(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
p1 = Page(self, 'Login 1', height=200, width=300)
p2 = Page(self, 'Next page is 2', height=400, width=300)
p3 = Page(self, 'We love number 3', height=400, width=600)
p1.callback = p2.onlift
p2.callback = p3.onlift
p3.callback = p1.onlift
p1.place(x=0, y=0, relwidth=1, relheight=1)
p2.place(x=0, y=0, relwidth=1, relheight=1)
p3.place(x=0, y=0, relwidth=1, relheight=1)
p1.onlift()
root = tk.Tk()
app = App(root)
root.mainloop()
上面我只定义了一种Frame
,叫做Page
.对于您的情况,您需要一个 Login
框架,然后是一个后续框架:
Above I've only defined one kind of Frame
, called Page
. For your situation, you'd want a Login
Frame, and then a subsequent Frame:
p1 = Login(self, ...)
p2 = Registered(self, ...)
这篇关于python Tkinter() 如何隐藏 UI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!