2011-07-30 28 views
1

私は2つのウィジェットを設計しました.1つはメインのアプリケーションウィジェットと、私のメインアプリケーションのプリファレンスを設定できるカスタムウィジェットです。彼らは、メインと子供という名前です。PyQtとQtDesignerを使ってカスタムダイアログを表示してカスタムダイアログをデザインするには?

これで、メインアプリケーションのボタンをクリックすると子ウィジェットが表示されるようになりました。 PythonとQtの本を使ってRapid GUIプログラミングを学ぼうとしましたが、そこに与えられている例は、手書きの形式であり、QtDesignerを使って設計されていません。私は混乱しています。親切に助けてください。

は私のコードは、これまでのところ、私はこのプログラムを起動しようとすると、しかし、何も起こりませんthis-

import serial, sys 

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from main import Ui_Form      # main.py and child.py are the ui 
from child import Ui_Form as Child_Form  # files generated using pyuic4 

class Main(QMainWindow): 
    def __init__(self, parent = None): 
     super(Main, self).__init__(parent) 
     self.ui = Ui_Form() 
     self.ui.setupUi(self) 
     self.connect(self.ui.btnLaunch, SIGNAL("clicked()"), self.show) 
    def show(self): 
     dialog = QDialog() 
     dialog.ui = Child_Form() 
     dialog.ui.setupUi(self) 


if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    myapp = Main() 
    myapp.show() 
    sys.exit(app.exec_()) 

です。代わりに、このコードの

+0

あなたのQMainWindowのshowメソッドをオーバーライドしています。そのメソッドに別の名前を付けてみるか、そのコードをinit関数に移動してみてください。 –

+0

ここにこれの公式文書です:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/designer.html –

+2

@MikeRamirezリンクが壊れています。ここで動作するものがあります:http://pyqt.sourceforge.net/Docs/PyQt4/designer.html – neuronet

答えて

1

self.connect(self.ui.btnLaunch, SIGNAL("clicked()"), self.show) 
def show(self): 
    dialog = QDialog() 
    dialog.ui = Child_Form() 
    dialog.ui.setupUi(self) 

はこれでみてください、それが動作するはずです:

self.connect(self.ui.btnLaunch, SIGNAL("clicked()"), self.showDialog) 
def showDialog(self): 
    dialog = QDialog() 
    dialog.ui = Child_Form() 
    dialog.ui.setupUi(self) 
    dialog.show() 
関連する問題