PyQt4:检查窗口是否存在

发布于 2024-12-22 08:56:10 字数 332 浏览 0 评论 0原文

我为MAYA做了一种工具。 一旦我调用该类并创建一个实例,我就不必再调用它了。 相反,我必须检查窗口是否存在。 事实上,当我按下按钮调用 close() 或“X”按钮时,它不会调用 __del()__ 方法。我无法清理我的作品。

因此,我打算检查实例是否存在,如果存在,我不调用类,只调用 show()。 但是,我找不到路。

_win = RigControlWindow()
_win.show()

RigControlWindow 类如何找到实例是否存在?

I made a kind of tool for MAYA.
Once I call the class and make a instance, I don't have to call it anymore.
Instead I must check the window is existing or not.
In fact, when I press a button to call close() or "X" button, it doesn't call __del()__ method. I can't clear up my works.

So, I plan to check the instance is existing, and if it is, I don't call class, just call show().
But, I can't find the way.

_win = RigControlWindow()
_win.show()

How can RigControlWindow class find the instance is existing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

转瞬即逝 2024-12-29 08:56:10

保留对 RigControlWindow 实例的引用作为主窗口的私有属性。

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self._rcwin = None

    def showRigControlWindow(self):
        if self._rcwin is None:
            self._rcwin = RigControlWindow()
        self._rcwin.show()

或者,您可以使用属性:

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self._rcwin = None

    @property    
    def rcwin(self):
        if self._rcwin is None:
            self._rcwin = RigControlWindow()
        return self._rcwin

    def showRigControlWindow(self):
        self.rcwin.show()

Keep a reference to the RigControlWindow instance as a private attribute of the main window.

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self._rcwin = None

    def showRigControlWindow(self):
        if self._rcwin is None:
            self._rcwin = RigControlWindow()
        self._rcwin.show()

Alternatively, you could use a property:

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self._rcwin = None

    @property    
    def rcwin(self):
        if self._rcwin is None:
            self._rcwin = RigControlWindow()
        return self._rcwin

    def showRigControlWindow(self):
        self.rcwin.show()
陌伤浅笑 2024-12-29 08:56:10

ekhumoro 答案的另一种选择是在模块中拥有一个如下所示的函数:

def startGui():
    if 'myWindows' in globals():
        global myWindows
        myWindows.show()
    else:
        global myWindows
        myWindows = init_gui.MainWindow(parent=init_gui.MyMainWindow())
        myWindows.show()

然后从 shelf 脚本 中调用 startGui,如下所示:

if __name__ == '__main__':
    startGui()

An alternative to ekhumoro's answer, is to have a function in a module like this:

def startGui():
    if 'myWindows' in globals():
        global myWindows
        myWindows.show()
    else:
        global myWindows
        myWindows = init_gui.MainWindow(parent=init_gui.MyMainWindow())
        myWindows.show()

And then call startGui from a shelf script like this:

if __name__ == '__main__':
    startGui()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文