import tkinter as tk
class Main(tk.Tk):
def __init__(self):
super().__init__()
self.geometry("200x200")
self.bind('<Configure>', lambda e: self.func())
def func(self):
x = self.winfo_width()
y = self.winfo_height()
if x >= 795 and y >= 308:
print(x, y)
print('было допущенно совпадение')
if __name__ == '__main__':
root = Main()
root.mainloop()
结论
было допущенно совпадение
1201 317
было допущенно совпадение
1201 314
было допущенно совпадение
1202 311
было допущенно совпадение
使用信号关闭窗口并调整大小的示例
import tkinter as tk
class Main(tk.Tk):
def __init__(self):
super().__init__()
self.geometry("200x200")
button = tk.Button(self, text='Закрыть', command=lambda: self.destroy())
button.pack()
self.bind('<Configure>', lambda e: self.func())
self.protocol("WM_DELETE_WINDOW", lambda: print('окно должно быть закрыто'))
def func(self):
x = self.winfo_width()
y = self.winfo_height()
if (x > 200 or x < 200) or (y > 200 or y < 200):
self.geometry("200x200")
print('Запрещено изменения окна')
if __name__ == '__main__':
root = Main()
root.mainloop()
窗口关闭:
移动(包括调整大小):
root.withdraw如果使用/方法以编程方式“最小化”/最大化窗口root.deiconify:如果我只是使用界面中的按钮折叠,那么在tcl/Tk
bind()man中列出的所有事件中,只有 FocusIn/FocusOut 在我的环境(Ubuntu Unity)中生成并root.state()保留normal。xprop/之类的实用程序的输出也xwininfo没有任何变化。用于
bind(<Configure>,self.func)在窗口变化时播放信号(窗口移动、窗口大小等)结论
使用信号关闭窗口并调整大小的示例