【发布时间】:2021-05-29 21:53:28
【问题描述】:
main.py
from window import *
from toplevel import *
w = Window("Title")
t = Top(w)
window.py
### IMPORT TKINTER
from tkinter import *
## CLASS Window
class Window():
def __init__(self , title):
self.window = Tk()
self.window.title(title)
self.window.mainloop()
toplevel.py
### IMPORT 'TKINTER'
from tkinter import *
## CLASS TOP
class Top():
def __init__(self , master):
self.top = Toplevel(master)
self.top.transient(master)
self.top.resizable(0 , 0)
self.top.mainloop()
TOPLEVEL 没有出现,当我关闭“Window”时,控制台输出是:AttributeError: 'Window' object has no attribute 'tk'
有人可以帮助我吗?非常感谢
【问题讨论】:
-
使用
t = Top(w.window)而不是t = Top(w)。或者你可以让Window继承自Tk。 -
只是一个有用的说明 - 使用
from module import *处理所有事情是一个不好的习惯,尤其是当只导入一个类/函数时。养成使用命名空间的习惯 -window.Window()、toplevel.Top()等。 -
运行
import this并阅读它。然后继续重读。我偶尔也会这样做。 -
@MattDMo Python 之禅并不是最佳实践的最佳来源。我不明白其中的大部分。我认为最好只查看流行(更有可能遵循最佳实践)库的源代码。
标签: python tkinter root toplevel