在 pySide 中关闭 qDialog(如果存在)
closing qDialog (if exists) in pySide
我在设计器中创建了一个 UI,使用 pyside-uic 将其转换为 python,然后按照教程我这样做了:
from PySide import QtCore, QtGui
import mirroratorUI as customUI
#import mirroratorCore as mirroratorCore
from shiboken import wrapInstance
import maya.OpenMayaUI as omui
reload(customUI)
def maya_main_window():
main_window_ptr = omui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtGui.QWidget)
class ControlMainWindow(QtGui.QDialog):
def __init__(self, parent=None):
super(ControlMainWindow, self).__init__(parent)
self.setWindowFlags(QtCore.Qt.Tool)
self.ui = customUI.Ui_MainWindow()
self.ui.setupUi(self)
myWin = ControlMainWindow(parent=maya_main_window())
myWin.show()
UI会被用到Maya里面,出现了,但是我打开3次,就会有3个diagos。我记得有一种方法可以检查对话框是否已经存在,如果存在,则将其删除。我在 google 上找到了一些信息,但我要么不明白如何起诉这些信息,要么它们不适合我的情况...
非常感谢您的帮助,
丹妮尔
请尝试以下代码。
global myWin
try:
myWin.close()
except:
pass
myWin = ControlMainWindow(parent=maya_main_window())
myWin.show()
上面的代码只是找出 windows 是否存在,如果存在它将关闭并像往常一样创建 window。
我在设计器中创建了一个 UI,使用 pyside-uic 将其转换为 python,然后按照教程我这样做了:
from PySide import QtCore, QtGui
import mirroratorUI as customUI
#import mirroratorCore as mirroratorCore
from shiboken import wrapInstance
import maya.OpenMayaUI as omui
reload(customUI)
def maya_main_window():
main_window_ptr = omui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtGui.QWidget)
class ControlMainWindow(QtGui.QDialog):
def __init__(self, parent=None):
super(ControlMainWindow, self).__init__(parent)
self.setWindowFlags(QtCore.Qt.Tool)
self.ui = customUI.Ui_MainWindow()
self.ui.setupUi(self)
myWin = ControlMainWindow(parent=maya_main_window())
myWin.show()
UI会被用到Maya里面,出现了,但是我打开3次,就会有3个diagos。我记得有一种方法可以检查对话框是否已经存在,如果存在,则将其删除。我在 google 上找到了一些信息,但我要么不明白如何起诉这些信息,要么它们不适合我的情况...
非常感谢您的帮助, 丹妮尔
请尝试以下代码。
global myWin
try:
myWin.close()
except:
pass
myWin = ControlMainWindow(parent=maya_main_window())
myWin.show()
上面的代码只是找出 windows 是否存在,如果存在它将关闭并像往常一样创建 window。