我對python非常陌生,同時學習我正在從事一個項目。這非常有趣,在這個例子中,我發現自己對面向對象編程可以節省多少工作感到困惑。好東西!如何從對象收集數據
與此同時,這是什麼讓我卡住了。
想法這裏的想法是創建一個MainApp從用戶收集多組數據。 每組都以一行預設顯示。
例子是:
SET1: Name_____,Age__,Height__,Weigh__,...
SET2:表面積___,___水平,成本__,__ Staffmembers,...
SETX: ...
,用戶可以按下按鈕「添加設置1」,「add Set2」或「add SetX」創建一個由不同集合組成的表單。儘可能多的他/他想要的。
完成所有填寫完成後。用戶將點擊「收集數據」並且所有的輸入都將被處理。第一部分全部完成,但這些數據收集令我頭疼。有人能告訴我這是如何實現的嗎?提前致謝! 我希望這是可以理解的。
這裏是我的代碼:(我已經修改了它,使之更短,更易於閱讀(希望))
文件:在inputfunctions.py
# some imports
class InputWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.input1(self):
def input1(self): # diplays a QHBoxLayout with several QLineEdits for input.
# fancy layout QLineEdits:
self.lineEdit01 = QtWidgets.QLineEdit("Enter text here")
def collect_data_input1(self):
input1_list = []
input1_list.append(str(self.lineEdit01.text())) #ERROR points here.
input1_list.append(str(self.lineEdit02.text()))
...
input1_list.append(str(self.lineEdit-1.text()))
if __name__ == '__main__':
app_inputWidget = QtWidgets.QApplication(sys.argv)
a_InputWidget = InputWidget()
sys.exit(app_input_Widget.exec_())
然後我有同一個目錄中的不同文件:
from inputfunctions import InputWidget
# some more imports
class Main_app(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.MainWindow()
def MainWindow(self):
# setting up UI
self.central = QtWidgets.QWidget()
self.add_Button = QtWidgets.QPushButton("Add Widget")
self.collect_Button = QtWidgets.QPushButton("Collect Data")
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.add_Button)
self.layout.addWidget(self.collect_Button)
self.central.setLayout(self.layout)
self.setCentralWidget(self.central)
self.show()
# connect
self.add_Button.clicked.connect(self.add_widget)
self.collect_Button.clicked.connect(self.collect_data)
def add_widget(self):
self.layout.addWidget(InputWidget) # this adds an InputWidget to the layout, when "Add Widget" is pressed.
def collect_data(self):
# HERE I want to collect all the data:
InputWidget.collect_data_input1(self) # this should fill input1_list
但我得到這個錯誤:
AttributeError的:「Main_app」對象有沒有屬性「lineEdit01」 我明白這是什麼意思,但我不能想出解決問題的正確的方式。我的搜索也無法啓發我。 我已經嘗試了很多不同的東西,但我無法得到它的工作。有人可以解釋如何做到這一點?
在此先感謝。
您可以編輯提供的源代碼,以在** AttributeError:**發生的位置添加註釋嗎? –
我編輯了相應的代碼。我也意識到我犯了一個錯誤。現在這是正確的錯誤。 – michaelh
讀你的代碼,錯誤應該說'self.InputWidget'屬性錯誤... InputWigdet本身是一個類,而不是自我應用程序的屬性 –