目录
Python 版本: 3.9.7
windows 版本: windows 10 x64
【萌新作品,不喜勿喷!!!】
认识Wm.transient
许多人都会见到tkinter实例(如IDLE)中有许去掉了最大最小化的窗口,如:
这就是临时窗口,那怎么做到这种效果呢?
可以用到这个代码:
Wm.transient(self, master=None)
作用: 绑定一个临时窗口。
self: 一个窗口, 但必须是一个 Toplevel 实例(使用Tk会报错)。
master: 父窗口。
认识Wm的"-disabled"属性
当你不想用户在操作一个窗口时,你可以用到这个代码:
Wm.attributes(self, "-disabled", bool)
作用: 让一个窗口无法被用户使用。
self: 一个窗口。
bool: 一个布尔值,True为上方self指定的窗口无法使用,False为上方self指定的窗口可以使用
Wm.transient中master的作用
如果用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()
其他
欢迎补充!