PyQt(PySide)とOpenCVで画像処理その6(サブウィンドウ)
久しぶりの更新。以下の続き
PyQt(PySide)とOpenCVで画像処理その5(イベントフィルター) - tataboxの備忘録
PyQt(PySide)でサブウィンドウを呼び出したり、ウィジットを追加してみる。
1.QtDesigner で下のように作る
Main window (ファイル名:main.ui objectname: main)
Widget (ファイル名:widget.ui objectname:widget)
Dialog (ファイル名:dialog.ui objectname:dialog)
2.フォルダに移動し、コマンドライン上でpythonのコードに変換
pyside-uic -o main.py main.ui pyside-uic -o widget.py widget.ui pyside-uic -o dialog.py dialog.ui
3.同一フォルダに以下の内容で作成し、実行
import PySide from PySide import QtCore,QtGui import sys from main import Ui_main from dialog import Ui_dialog from widget import Ui_widget class Main(QtGui.QMainWindow,Ui_main): def __init__(self, parent = None): super(Main, self).__init__(parent) self.ui = Ui_main() self.setupUi(self) self.button.clicked.connect(self.pushButton) QtCore.QObject.connect(self.actionLoad_Dialog, QtCore.SIGNAL("triggered()"), self.pushMenu) def pushButton(self): self.widget = Widget(self) self.widget.show() def pushMenu(self): self.dialog = Dialog(self) self.dialog.show() class Dialog(QtGui.QDialog,Ui_dialog): def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.setupUi(self) class Widget(QtGui.QWidget,Ui_widget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setupUi(self) if __name__ == '__main__': app = QtGui.QApplication(sys.argv) dmw = Main() dmw.show() sys.exit(app.exec_())
menu 中のload Dialogを押す
load widgetボタンを押す
Widgetは内部、Dialogは別窓で表示される。
参考
python - How to create new PyQt4 windows from an existing window? - Stack Overflow