Wirror 发表于 2021-7-10 13:26:45

tkinter 打开窗口的问题

用tkinter做一个按钮,如何实现按下按钮后只打开一个窗口,而不是每按一次就打开一个新窗口

Twilight6 发表于 2021-7-10 14:08:15



用个比较笨的方法,可以这样:

from tkinter import *

def close_window():
    global toplevel
    toplevel.destroy()
    toplevel = None

def window():
    global toplevel
    if toplevel == None:
      toplevel = Toplevel(root)
      toplevel.protocol("WM_DELETE_WINDOW", close_window)


root = Tk()

button = Button(root, text='窗口', command=window)
button.pack(padx=5, pady=5)

toplevel = None

mainloop()

Wirror 发表于 2021-7-10 14:41:17

本帖最后由 Wirror 于 2021-7-10 14:42 编辑

Twilight6 发表于 2021-7-10 14:08
用个比较笨的方法,可以这样:

就是说打开之后吧toplevel设置为WM_DELETE_WINDOW,关上窗口时把toplevel再设置成None吗?protocol怎么用啊

Wirror 发表于 2021-7-10 14:41:49

Twilight6 发表于 2021-7-10 14:08
用个比较笨的方法,可以这样:

这样行不行
from b import *
from tkinter import *

def show():
    root2.update()
    root2.deiconify()
if __name__ == '__main__':
    root1 = Tk()
    root2 = Tk()
    root2.withdraw()
    Button(root1, text='show', command=show).pack()

    mainloop()

Twilight6 发表于 2021-7-10 16:16:13

Wirror 发表于 2021-7-10 14:41
这样行不行
from b import *
from tkinter import *




应该可以,你这种方法感觉更简洁,建议一个 Tk 根窗口就够啦,不然每个窗口独立开来,都要一个一个去关闭

root2 = Toplevel(root1)

页: [1]
查看完整版本: tkinter 打开窗口的问题