2011-07-30 69 views
1

我設計了2個小部件 - 一個是主應用程序小部件和一個自定義小部件,它允許我在主應用程序中設置首選項。他們被命名 - 主要和孩子。如何使用PyQt和QtDesigner來設計自定義對話框來顯示自定義對話框?

現在,當我單擊主應用程序中的按鈕時,我無法獲得子部件顯示。 試圖從使用Python和Qt書籍的快速GUI編程中學習,但這裏給出的例子是針對手工編碼的形式,而不是使用QtDesigner設計的。我感到困惑。請幫助。

到目前爲止我的代碼是這個 -

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的表演方法。嘗試將該方法命名爲其他名稱,或將該代碼移入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()