目录
认识Wm.transient
认识Wm的"-disabled"属性
Wm.transient中master的作用
代码参考
其他
Python 版本: 3.9.7
windows 版本: windows 10 x64
【萌新作品,不喜勿喷!!!】
许多人都会见到tkinter实例(如IDLE)中有许去掉了最大最小化的窗口,如:
这就是临时窗口,那怎么做到这种效果呢?
可以用到这个代码:
Wm.transient(self, master=None)
作用: 绑定一个临时窗口。
self: 一个窗口, 但必须是一个 Toplevel 实例(使用Tk会报错)。
master: 父窗口。
当你不想用户在操作一个窗口时,你可以用到这个代码:
Wm.attributes(self, "-disabled", bool)
作用: 让一个窗口无法被用户使用。
self: 一个窗口。
bool: 一个布尔值,True为上方self指定的窗口无法使用,False为上方self指定的窗口可以使用
如果用Wm.transient绑定了master,则再使用"-disabled"=True,则点击master会发生强调。
Toplevel屏蔽父窗口(Wm的"-disabled"属性)代码:
# Toplevel屏蔽父窗口代码 from tkinter import * global top def end(): global t, top t.attributes("-disabled", 0) top.destroy() def add_tk(): global t, top t.attributes("-disabled", 1) top = Toplevel() top.resizable(False, False) top.geometry("500x250+530+30") lb = Label(top, text='子窗口,父窗口屏蔽') lb.pack() bt2 = Button(top, text='退出', command=end) bt2.pack() top.protocol('WM_DELETE_WINDOW', end) top.mainloop() t = Tk() t.wm_title('Toplevel 与屏蔽窗口') t.geometry("500x100") t.resizable(False, False) text = '''测试:Toplevel 与屏蔽窗口 这个测试将打开一个Toplevel窗口并屏蔽副窗口,在Toplevel窗口关闭后恢复''' label = Label(t, text=text) label.pack() bt = Button(t, text='新建窗口', command=add_tk) bt.pack() t.mainloop()
Toplevel去掉最小最大化按钮(Wm.transient)代码:
# Toplevel去掉最小最大化按钮代码 import tkinter def add_window(): top = tkinter.Toplevel() top.wm_title('Toplevel窗口') top.resizable(False, False) tkinter.Label(top, text='Toplevel窗口').pack() top.geometry("150x40") top.transient(root) # 核心指令 root = tkinter.Tk() root.wm_title('Toplevel去掉最小最大化按钮') root.geometry("500x100") root.resizable(False, False) text = '''测试:Toplevel去掉最小最大化按钮 这个测试将去掉(Toplevel)窗口中的最小化与最大化,也就是临时窗口''' label = tkinter.Label(root, text=text) label.pack() button = tkinter.Button(root, text='生成窗口', command=add_window) button.pack() root.mainloop()
欢迎补充!