【Python - tkinter】给Tk实例添加一个去掉最大最小化的临时窗口 | 仅使用临时窗口让父窗口失效

目录

认识Wm.transient

认识Wm的"-disabled"属性

Wm.transient中master的作用

 代码参考

其他


Python 版本: 3.9.7

windows 版本: windows 10 x64

【萌新作品,不喜勿喷!!!】

认识Wm.transient

许多人都会见到tkinter实例(如IDLE)中有许去掉了最大最小化的窗口,如:

 【Python - tkinter】给Tk实例添加一个去掉最大最小化的临时窗口 | 仅使用临时窗口让父窗口失效

 这就是临时窗口,那怎么做到这种效果呢?

可以用到这个代码:

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会发生强调。【Python - tkinter】给Tk实例添加一个去掉最大最小化的临时窗口 | 仅使用临时窗口让父窗口失效

 代码参考

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()

其他

欢迎补充!

上一篇:python3.6-tkinter


下一篇:对汉语有边界编码的词语编码的点击选择,tkinter,python