PySideでGUI作りたいけど、PySideというキーワードでググっても情報出てこない…
これ、どうやって勉強すればいいの…??
と思っていたんですが、「PyQtのコード観ればいいだったわ(`・ω・´)」という事に今更ながら気づいたので、メモ。
PythonのPyQtによるクロスプラットフォームGUIアプリ作成入門 - MyEnigma
PyQt QTreeWidget サンプル - T&T simple
Datの如く: [PyQt]QTreeView内にWidgetを配置
コノあたりのサンプルコードはちょっと変更するだけでMayaでも動作させられます。
from PyQt4 import QtGui, QtCore,Qt
となっている部分を以下の様に書き換えます(元の内容によって変わりますが。)
from PySide import QtCore, QtGui
次にクラスの定義部分。
class Example(QtGui.QWidget):
Mayaで表示させるために以下の様にします。
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin class Example(MayaQWidgetBaseMixin, QtGui.QWidget):
GUIの表示部分
app = QtGui.QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
こんな感じに。
app = QtGui.QApplication.instance() Example() sys.exit() app.exec_()
後ろ二つについては以前の記事とおなじですね。
MOCHI-MOCHI 【MAYA】Maya2015からはshiboken使わなくてもいいらしい
ただし、PyQtとPySideの差異もあるので考慮しなければならない部分もあるようです。
PySideとPyQtの差異 - None is None is None
しかし、これで色々と情報を入手できそうです!
# -*- coding: utf-8 -*- from PySide import QtCore, QtGui from maya.app.general.mayaMixin import MayaQWidgetBaseMixin #OKってボタンが表示されるだけのUI class GUI(MayaQWidgetBaseMixin, QtGui.QWidget): def __init__(self, parent=None): super(GUI, self).__init__(parent=parent) self.layout = QtGui.QVBoxLayout() self.setLayout(self.layout) self.okButton = QtGui.QPushButton('OK') self.layout.addWidget(self.okButton) if __name__ == '__main__': app = QtGui.QApplication.instance() ui = GUI() ui.show() sys.exit() app.exec_()
from Shiboken.shiboken import wrapInstance
from shiboken import wrapInstance
app = QtGui.QApplication(sys.argv) ui = GUI() ui.show() sys.exit(app.exec_())
app = QtGui.QApplication.instance() ui = GUI() ui.show() sys.exit() app.exec_()