Ahojte, nejako tomu nechapem, co je atribut resp. ako pristupovat k Widgetom. Mam dva python moduly. Jeden sa vola GPS.py a druhy comm.py. Potrebujem, aby funkcia uart_rx (comm.py) pridala text do output_text (gps.py). Skonci to vsak chybou AttributeError: 'Ui_Form' object has no attribute 'output_text'. Prosim, poradite mi ?
gps.py from PyQt4 import QtCore, QtGui import comm 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(796, 683) self.output_text = QtGui.QTextEdit(Form) self.output_text.setGeometry(QtCore.QRect(10, 13, 761, 461)) self.output_text.setObjectName(_fromUtf8("output_text")) self.widget = QtGui.QWidget(Form) self.widget.setGeometry(QtCore.QRect(10, 500, 761, 33)) self.widget.setObjectName(_fromUtf8("widget")) self.horizontalLayout = QtGui.QHBoxLayout(self.widget) self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) self.send = QtGui.QPushButton(self.widget) self.send.setObjectName(_fromUtf8("send")) self.horizontalLayout.addWidget(self.send) self.tr_send = QtGui.QLineEdit(self.widget) self.tr_send.setObjectName(_fromUtf8("tr_send")) self.horizontalLayout.addWidget(self.tr_send) self.send.raise_() self.tr_send.raise_() self.output_text.raise_() self.output_text.raise_() self.send.clicked.connect(comm.uart_rx) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): Form.setWindowTitle(_translate("Form", "Form", None)) self.send.setText(_translate("Form", "Send", None)) 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_())
comm.py import serial import gps def uart_tx(): if (ser.isOpen()): print "Open" def uart_rx(): try: ser = serial.Serial('/dev/ttyACM0') ser.write("l\n") except: print "Error" while ser.isOpen(): tmp = ser.read(100) print tmp ui = gps.Ui_Form() ui.output_text.append(tmp)
Jako v Pythone som napísal tri riadky a to doslovne, takže ma ber s rezervou.
Neinicializuješ objekt v comm.py. V gps.py to robíš. Takže nemáš kde do vidgetu zapisovať, keď neexistuje.
Ahoj,
diky. Pomohlo to. Vedel by si mi doporucit nejaku literaturu kde by som si vedel o tom viac precitat ?
Neviem jaký máš level a kde chceš začať.
Zaklady nejake mam, ale to PyQT moc nechapem.
Tak potom toto by ťa mohlo nasmerovať.
Je to staršie PyQT4, pre PyQT5 si už pozri oficiálnu dokumentáciu ktorú nájdeš aj v zdrojoch tvojej distribúcie.
Ešte si pozri toto vlákno. Dobré IDE vie pomôcť.
Nájdi si knihu Rapid GUI Programming with Python and Qt od Mark Summerfield.
Diky vsetkym. Pozriem to.
No a hlavne sa hocikedy obráť s problémom, od toho tu to fórum je :-)
No tak toto si ma potesil. Som rad, ze sa mozem na niekoho obratit. Robim amatersky GPS tracker pre holuby a teraz robim k tomu nejake GUI
OK, tak až máš ďalší problém, kľudne si založ novú tému.