私はのpythonにかなり新しく、学習中はプロジェクトに取り組んでいます。これは非常に楽しいものです。この例では、オブジェクト指向プログラミングでどれくらいの作業量を節約できるのか困っています。素晴らしいもの!オブジェクトからデータを収集する方法
同時に、これが私を悩ませます。
ここでの考え方は、ユーザからのデータのいくつかのセットを収集MainAppにを作成することです。 各セットは1行のプリセットで表示されます。
例としては、次のようになります。
SET1: Name_____、Age__、Height__、Weigh__、...
SET2:表面積___、レベル__、コスト__、__ Staffmembers、...
SETX: ...ユーザーは0123を、 "SET1を追加" ボタンを押すことができ
"Set SetX"または"add SetX"を追加して、異なるセットで構成されるフォームを作成します。多くの人が望んでいる。
すべての記入が完了しました。ユーザーは"データの収集"を押すと、すべての入力が処理されます。 最初の部分はすべて完了していますが、このデータ収集では頭がおかしくなります。誰かがこれを達成する方法を私に指摘できますか?前もって感謝します! これが理解できるといいですね。ここで
は私のコードです:(私は)うまくいけば(読み、それは短く、より簡単にするために、それを変更した)
FILE:
# 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_())
inputfunctions.pyその後で私と同じディレクトリにある別のファイル:
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はクラスそのものであり、自己アプリケーションの属性ではありません –