【问题标题】:How to check if it has a class running?如何检查它是否有一个类正在运行?
【发布时间】:2019-03-31 12:20:51
【问题描述】:

我制作这个基本代码只是为了发送到这里看看我是否能找到解决方案。

我希望代码执行以下操作:当我按下按钮时,它会使用另一个按钮调用另一个类,如果我再次按下该按钮,它将检查该类是否仍在显示,以免添加另一个 X按钮。我的代码供你查看结果,并遵循代码库供读者理解。

https://imgur.com/a/UAx6xxd

from tkinter import *
class Window:
    def __init__(self,root):
        self.frame = Frame(root)
        self.frame.pack(side = LEFT)
        self.frame1 = Frame(root)
        self.frame1.pack()
        self.But = Button(self.frame,text = 'Press', command = self.ButOk)
        self.But.pack(side = LEFT,anchor = E)

    def ButOk(self):
        self.Aux = False
        self.Aux = not self.Aux
        if self.Aux:
            Window1(root)

class Window1:
    def __init__(self,root):
        self.fram = Frame(root)
        self.fram.pack(side = LEFT)
        self.fram1 = Frame(root)
        self.fram1.pack()

        self.But = Button(self.fram, text = 'X',command = self.close)
        self.But.pack(side =RIGHT,anchor = W)
    def close(self):
        self.Aux1 = False
        self.Aux1 = not self.Aux1
        if self.Aux1:
            self.fram.pack_forget()
root=Tk()
Window(root)
root.mainloop()

我希望用户按下按钮时不会生成这个“窗口”。

【问题讨论】:

  • 重新思考你的方法,阅读Switch between two frames in tkinter
  • @stovfl:我认为这是个坏建议。为什么切换到更复杂的代码会解决这个问题?
  • 也许吧。只要@Giovanni 不评论我的建议,我们就永远不会知道。

标签: python python-3.x tkinter tkinter-layout tkinter-menu


【解决方案1】:

如果我正确理解了您的问题,您希望确保不会通过多次单击根级窗口上的按钮来创建多个窗口。

创建多个窗口时请尝试使用TopLevel 小部件。 此外,您可以使用以下代码检查是否存在 Toplevel 小部件:

if tkinter.Toplevel.winfo_exists(toplevel_name)==1:
    self.Aux = False

【讨论】:

  • Eeee,现在我明白了,它在这里工作得很好,非常感谢。
猜你喜欢
  • 2020-04-25
  • 1970-01-01
  • 2013-07-02
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
相关资源
最近更新 更多