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_()