Snazim sa spravit moju prvu aplikaciu a mam problem s komunikaciou medyi modulmi. Mam tri subory irrigation.py, main.py a nastavenia.py. Naskor som mal iba prve dva a fungovalo to. Vztvoril som nastavenia.py a chcel by som tam dat vsetky pociatocne nastavenia resp. hodnoty. Na skusku som tam zadal pridanie hodnoty do ComboBoxu. V irrigation.py naimportujem modul nastavenia a potom sa ho snazim zavolat. Skoncim s chybou ImportError: cannot import name Ui_Form. Vedeli by ste mi pomoct ?
http://pastebin.com/3SBEEJYt
http://pastebin.com/mpvkFy5M
http://pastebin.com/bnuvR10c

v prvom rade si skus prejst odporucania na stackoverflow - ked zacinas programovat, bude to tvoj kamarat, s ktorym stravis vela casu :)
Ked si vyskusal ich odporucania, tak daj vediet (osobne to typujem na zle nakonfigurovanu PATH v pythone)
Tak trapim sa s tzmto uz druhy den. Prehladal som snad cely internet a mne sa to nedari naprogramovat. Prestavam tomu rozumiet. Na skusku som spravil velice jednoduchy priklad.Mam stale problem s volanim funkcie fill. Myslim si, ze PATH mam nastavene celkom dobre. Oba python subory mam v rovnakej zlozke resp. pouzivam Eclipse a tam som vytvoril projekt, ktorz obsahuje tie dva subory. Mohli bz ste mi trochu pomoct ?
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")) fill_combobox.fill() self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(_translate("Form", "Form", None))fill_combobox.py
from PyQt4 import QtGui def fill(): import test okno = QtGui.QWidget a = test.Ui_Form a.setupUi(okno) a.comboBox.addItems("1") if __name__ == "__main__": import sys import test app = QtGui.QApplication(sys.argv) Form = QtGui.QWidget() ui = test.Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_())Nie je mi z kodu celkom jasne co si chcel aby to robilo a preco volas z konkretnej funkcie znova cely hlavny file (prvy riadok v def fill()) a preco podmienkujes hlavne okno v subore s doplnkovymi funkciami. Kazdopadne funkciu fill(), ktora ti doplni do roletky udaje z vedlajsieho suboru zavolas takto:
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) if __name__ == "__main__": import sys import test app = QtGui.QApplication(sys.argv) Form = QtGui.QWidget() ui = test.Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_()) 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")) fill_combobox.fill(self) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(_translate("Form", "Form", None))fill_combobox.py
def fill(self): self.comboBox.addItems("1")Nemam cas prechadzat cely tvoj kod, ale vo vseobecnosti - Funkciu musis volat na konkretny objekt (v tomto pripade je to objekt self). Kedze v danej funkcii mas ale konkretne zaradeny objekt, ktory funkcia upravuje, minas sa vyznamu pouzitia univerzalnosti objektoveho programovania. Lepsie by podla mna bolo z hlavneho suboru volat funkciu fill_combobox.fill(self.[nazov objektu - cize v tvojom pripade comboBox]) a samotna funkcia by potom vyzerala:
def fill(ui): ui.addItems("1")Odpoved ber s rezervou - mojim hlavnym programovacim jazykom je PHP a Pythonu sa venujem iba okrajovo, ked mi zvysi cas. Takze sa moze moje riesenie lisit od dobrych mravov Pythonistov :)