我直接跳到我的问题上来。我正在用tkinter编写基本的ui代码。我得到了分离的多窗口设计。所以当代码执行时,会出现一些小窗口,但我想把它们都控制在一个面板窗口中。在这种情况下,我需要控制所有窗口(包括控制面板窗口)边框隐藏/显示属性。这是我的密码:
from tkinter import *
no_border = True
class ControlPanel(Tk):
def __init__(self, posx=0, posy=0):
super().__init__()
global no_border
self.posx = posx
self.posy = posy
self.no_border = True
self.title("Control Panel")
self.attributes("-topmost", "true")
self.geometry("+{}+{}".format(self.posx, self.posy))
self.overrideredirect(no_border)
self.border_button = Button(self, text = "Border", command = lambda: Window1.borderShowHide(Window1))
self.border_button.pack()
self.exit_button = Button(self, text = "Exit", command = self.destroy)
self.exit_button.pack()
@classmethod
def borderShowHide(cls, self):
global no_border
if no_border:
no_border = False
else:
no_border = True
self.overrideredirect(no_border)
class WindowAttributes(Toplevel):
def __init__(self, master=None, windowTitle=None, posx=0, posy=0):
super().__init__(master)
global no_border
self.posx = posx
self.posy = posy
self.no_border = True
self.title(windowTitle)
self.attributes("-topmost", "true")
self.geometry("+{}+{}".format(self.posx, self.posy))
self.overrideredirect(no_border)
@classmethod
def borderShowHide(cls, self):
global no_border
if no_border:
no_border = False
else:
no_border = True
self.overrideredirect(no_border)
class Window1(WindowAttributes):
def __init__(self, *args):
super().__init__(*args)
self.text_label = Label(self, text = "Test 1")
self.text_label.pack()
class Window2(WindowAttributes):
def __init__(self, *args):
super().__init__(*args)
self.text_label = Label(self, text = "Test 2")
self.text_label.pack()
def main():
control_panel = ControlPanel(1225, 50)
window_1 = Window1(control_panel, "Window 1", 0, 50)
window_2 = Window2(control_panel, "Window 2", 0, 500)
control_panel.mainloop()
if __name__ == "__main__":
main()
当我试图从面板边框按钮控制其他windows边框属性时,我得到以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Lenovo- PC\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "C:\Users\Lenovo-PC\Desktop\interface.py", line 22, in <lambda>
self.border_button = Button(self, text = "Border", command = lambda: Window1.borderShowHide(Window1))
File "C:\Users\Lenovo-PC\Desktop\interface.py", line 69, in borderShowHide
self.overrideredirect(no_border)
File "C:\Users\Lenovo-PC\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1944, in wm_overrideredirect
return self._getboolean(self.tk.call(
AttributeError: 'bool' object has no attribute '_getboolean'
原谅我的英语,谢谢你
目前没有回答
相关问题 更多 >
编程相关推荐