2014-01-20 34 views
-2

我有兩個模塊test.py和fill_combobox.py。 fill_combobox用於組合框中的默認值。模塊之間的通信仍然存在問題。Python:AttributeError:類型對象'Ui_Form'沒有屬性'comboBox'

test.py

 
from PyQt4 import QtCore, QtGui 
import fill_combobox 

try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _fromUtf8(s): 
     return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 

class Ui_Form(object): 
    def setupUi(self, Form): 
     Form.setObjectName(_fromUtf8("Form")) 
     Form.resize(400, 300) 
     self.comboBox = QtGui.QComboBox(Form) 
     self.comboBox.setGeometry(QtCore.QRect(160, 120, 51, 25)) 
     self.comboBox.setObjectName(_fromUtf8("comboBox")) 

     self.retranslateUi(Form) 
     QtCore.QMetaObject.connectSlotsByName(Form) 

    def retranslateUi(self, Form): 
     Form.setWindowTitle(_translate("Form", "Form", None)) 
     fill_combobox.fill() 

if __name__ == "__main__": 
    import sys 
    app = QtGui.QApplication(sys.argv) 
    Form = QtGui.QWidget() 
    ui = Ui_Form() 
    ui.setupUi(Form) 
    Form.show() 
    sys.exit(app.exec_()) 

fill_combobox.py

 
def fill(): 
    import test 
    for i in range(40): 
     test.Ui_Form.comboBox.addItems(str(i)) 
+1

請詳細說明您面臨的確切問題。你將獲得更多的幫助:-) – gravetii

回答

2

在你的代碼行:

test.Ui_Form.comboBox.addItems(str(i)) 

正在訪問Ui_Form,而不是一個Ui_Form在立場。因爲這樣的課不是有任何comboBox屬性。如果你想使用Ui_Form類使用在test.py年底所示的模式:

form = QtGui.QWidget() 
ui = Ui_Form() 
ui.setupUi(form) 
form.show() 

你應該把這些代碼for循環,在循環訪問form實例。


如果你在很多地方都有這樣做可能會更好編寫自定義窗口小部件爲:

class MyWidget(QWidget, Ui_Form): 
    def __init__(self, parent=None, ...): 
     super(MyWidget, self).__init__(parent) 
     self.setupUi(self) 

然後你可以避開創建Ui_Form實例,只是做:

form = MyWidget() 
form.show() 
+0

好的。對我來說很清楚。非常感謝 –

相關問題