-1
所以,我有兩個類,ApplicationWindow是main和LoginWindow是main的頂層。所以我不能將從頂級窗口輸入的值返回到main的self.LOGIN和self.PASSW。通過所看到的 - 沒有發現任何可以幫助我的東西。你可以幫我嗎?Tkinter,從頂級窗口獲得值
我的代碼:
import os
import sys
import tkinter as tk
class ApplicationWindow(tk.Tk):
def __init__(self, master=None):
# print(l,p)
self.LOGIN = "555"
self.PASSW = "666"
self.master = master
self.master.geometry('800x400')
self.master.title("app")
self.master.f_app = tk.Frame(self.master).pack()
self.menuBuild()
self.b_log = tk.Button(self.master, width=10, text="button").pack()
def menuBuild(self):
menubar = tk.Menu(self.master)
self.master.config(menu=menubar)
mainMenu = tk.Menu(menubar, tearoff=0)
mainMenu.add_command(label="Login", command=self.login)
mainMenu.add_separator()
mainMenu.add_command(label="Exit", command=self.onExit)
menubar.add_cascade(label="File", menu=mainMenu)
def login(self):
self.tl_log = tk.Toplevel(self.master)
self.login = LoginWindow(self.tl_log)
def onExit(self):
self.master.destroy()
class LoginWindow(tk.Tk):
def __init__(self, master=None):
self.master = master
self.master.title("login")
self.master.f_login = tk.Frame(self.master)
self.master.geometry("300x100")
self.l_log = tk.Label(self.master, text="mailbox")
self.l_psw = tk.Label(self.master, text="password")
self.e_log = tk.Entry(self.master, width=25)
self.e_psw = tk.Entry(self.master, show="*", width=25)
self.b_log = tk.Button(self.master, width=10, text="login", command=self.func)
self.l_log.grid(row=1, column=1)
self.l_psw.grid(row=2, column=1)
self.e_log.grid(row=1, column=2)
self.e_psw.grid(row=2, column=2)
self.b_log.grid(row=3, column=1, columnspan=2)
def func(self):
l = self.e_log.get()
p = self.e_psw.get()
if l == "" or " " in l:
print("not")
else:
return l, p
self.master.destroy()
def main():
root = tk.Tk()
main = ApplicationWindow(root)
root.mainloop()
if __name__ == '__main__':
main()
,不,不!如果你不打算用你的對象作爲'Tk'實例,就不要從'tk.Tk'繼承!它現在可能不會給你提供任何問題,但是如果你使用'super().__ init __(master)'就像你應該繼承一樣,你會看到它是如何爆炸的。 –
在返回語句之後放置'self.master.destroy()'意味着它永遠不會執行,'return'結束函數。 –
(可以說)確定_one_類從'Tk'繼承,但你肯定不應該有多個。 –