单击按钮时如何仅制作 1 个新 window? tkinter
how to make only 1 new window when a button is clicked? tkinter
我想制作一个按钮,当点击它时会打开一个新的 window (tk.toplevel),有没有办法让按钮只工作一次,(它只会让一个新的 window 之后单击按钮时,单击时按钮不执行任何操作)
从下面的代码中,我可以通过点击按钮制作无限数量的顶级,但我只想让它在点击时创建一个。
import tkinter as tk
class run: # pls ignore if there are any syntrax error/spelling because I typed this in stack overflow
def __init___(self, master)
button = tk.button(master, text="btn", self.command=make_new)
button.grid()
def make_new()
new = tk.toplevel(master)
master1 = tk.Tk()
i = Run(master1)
master1.mainloop()
*** 我没放原码因为太多classes/functions放这里
*** 这是我提出的另一个问题,其中包含更多代码:
这里的麻烦:“循环”迭代对于人类响应来说太快了,一个动作可以在多次迭代中仍然有效。
可能solution/Tip#1
¿可以在de new = tk.toplevel(master)
之后添加一个wait(miliSeconds)
(或类似的功能)吗?我在 Arduino 上遇到了同样的问题,但这是因为“循环”对人类反应来说太快了,所以你可能需要在打开新的 window 后添加一点“等待”(可能是半秒或 1 second), 所以你将只有 1 个新的 window.
可能solution/Tip#2
如果你不能添加一个wait(miliSeconds)
函数,你可以尝试在main方法中添加一个标志,当你进入make_new()
方法时询问flag == 0
是否是,将它变成 1 并继续,如果标志不是 0,只需跳过打开一个新的 window
我对你的代码做了一些修改,当你点击按钮时,它会创建一个顶层,如果你点击多次,它不会创建更多:
import tkinter as tk
class Run:
def __init__(self, master):
self.master = master
self.toplevels = 0
button = tk.Button(master, text="btn", command=self.make_new)
button.pack()
def make_new(self):
if not self.toplevels:
new = tk.Toplevel(self.master)
self.toplevels += 1
master1 = tk.Tk()
i = Run(master1)
master1.mainloop()
我想制作一个按钮,当点击它时会打开一个新的 window (tk.toplevel),有没有办法让按钮只工作一次,(它只会让一个新的 window 之后单击按钮时,单击时按钮不执行任何操作)
从下面的代码中,我可以通过点击按钮制作无限数量的顶级,但我只想让它在点击时创建一个。
import tkinter as tk
class run: # pls ignore if there are any syntrax error/spelling because I typed this in stack overflow
def __init___(self, master)
button = tk.button(master, text="btn", self.command=make_new)
button.grid()
def make_new()
new = tk.toplevel(master)
master1 = tk.Tk()
i = Run(master1)
master1.mainloop()
*** 我没放原码因为太多classes/functions放这里
*** 这是我提出的另一个问题,其中包含更多代码:
这里的麻烦:“循环”迭代对于人类响应来说太快了,一个动作可以在多次迭代中仍然有效。
可能solution/Tip#1
¿可以在de new = tk.toplevel(master)
之后添加一个wait(miliSeconds)
(或类似的功能)吗?我在 Arduino 上遇到了同样的问题,但这是因为“循环”对人类反应来说太快了,所以你可能需要在打开新的 window 后添加一点“等待”(可能是半秒或 1 second), 所以你将只有 1 个新的 window.
可能solution/Tip#2
如果你不能添加一个wait(miliSeconds)
函数,你可以尝试在main方法中添加一个标志,当你进入make_new()
方法时询问flag == 0
是否是,将它变成 1 并继续,如果标志不是 0,只需跳过打开一个新的 window
我对你的代码做了一些修改,当你点击按钮时,它会创建一个顶层,如果你点击多次,它不会创建更多:
import tkinter as tk
class Run:
def __init__(self, master):
self.master = master
self.toplevels = 0
button = tk.Button(master, text="btn", command=self.make_new)
button.pack()
def make_new(self):
if not self.toplevels:
new = tk.Toplevel(self.master)
self.toplevels += 1
master1 = tk.Tk()
i = Run(master1)
master1.mainloop()