Два вопроса здесь. Я не понимаю, как заставить мой GUI-код работать как кнопка майя, а не работать в редакторе скриптов. Моя первая проблема заключается в том, есть ли какой-либо простой способ вызвать мой код в разделе if -main--? Прямо сейчас мне приходится бросать несколько строк, которые у меня есть, в свою собственную функцию и звонить таким образом. Вот что у меня есть:QT Gui Window появляется тогда исчезает в майя
from PySide import QtCore, QtGui, QtUiTools
import maya.cmds as cmds
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(400, 300)
GUI STUFF HERE
def retranslateUi(self, Dialog):
SET TEXT STUFF
def closeBtn_clicked(self):
DO SOMETHING
def swapRefBtn_clicked(self):
DO SOMETHING
if __name__ == "__main__":
import sys
app = QtGui.QApplication.instance()
if app is None:
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
app.exec_()
Я делаю это как кнопка полки, которые, очевидно, не будет работать (есть в любом случае, чтобы получить доступ к сниппет в случае «--main--»?):
import swapRef as swap
swap.main()
Единственное исправление я нашел бросает все это в своей собственной функции, а затем просто называть его:
def main():
import sys
app = QtGui.QApplication.instance()
if app is None:
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
app.exec_()
... Тем не менее вопрос # 2, когда я делаю это изменение, мой GUI окно прямо сейчас всплывает и быстро пупс/исчезает , Я не уверен, почему бросать этот код в функцию и вызывать его, это приведет к изменению? Пожалуйста, помогите, я сидел на этом, не имея понятия, почему.
Просто чтобы добавить, я провел некоторое исследование, и приложение app.exec() должно держать это окно. Почему он не удерживает его, когда я перемещаю часть if __main__ в свою собственную функцию и вызываю ее там, в отличие от того, что она работает нормально, когда она оставлена как есть? – Zak44