読者です 読者をやめる 読者になる 読者になる

tataboxの備忘録

データ解析、画像解析、化学分析などなど

PyQt(PySide)とOpenCVで画像処理その6(サブウィンドウ)

久しぶりの更新。以下の続き
PyQt(PySide)とOpenCVで画像処理その5(イベントフィルター) - tataboxの備忘録

PyQt(PySide)でサブウィンドウを呼び出したり、ウィジットを追加してみる。

1.QtDesigner で下のように作る

Main window (ファイル名:main.ui objectname: main)

f:id:tatabox2000:20150301223801p:plain

Widget (ファイル名:widget.ui objectname:widget)

f:id:tatabox2000:20150301215956p:plain

Dialog (ファイル名:dialog.ui objectname:dialog)

f:id:tatabox2000:20150301215949p:plain

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を押す

f:id:tatabox2000:20150301224228p:plain

load widgetボタンを押す

f:id:tatabox2000:20150301224409p:plain

Widgetは内部、Dialogは別窓で表示される。

参考

python - How to create new PyQt4 windows from an existing window? - Stack Overflow