From 7f3cec0144aa96d49ba64f099d5d5b6e2007a255 Mon Sep 17 00:00:00 2001 From: rsxri Date: Wed, 9 Oct 2024 05:37:05 +0100 Subject: [PATCH] add participant.py for entry window, update main.py to be application entry --- main.py | 12 +++ .../__pycache__/participant.cpython-38.pyc | Bin 0 -> 2250 bytes modules/participant.py | 83 ++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 modules/__pycache__/participant.cpython-38.pyc create mode 100644 modules/participant.py diff --git a/main.py b/main.py index e69de29..c1a745b 100644 --- a/main.py +++ b/main.py @@ -0,0 +1,12 @@ +import sys + +from PyQt5.QtWidgets import QApplication + +from modules.participant import Participant + +if __name__ == '__main__': + app = QApplication(sys.argv) + window = Participant() + window.setWindowTitle("3Dots") + window.show() + sys.exit(app.exec_()) diff --git a/modules/__pycache__/participant.cpython-38.pyc b/modules/__pycache__/participant.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f9b20005e331d0bd31776753abfd419e6d39a8b6 GIT binary patch literal 2250 zcmZ`)OK;mo5Z>iWltev}xQX*>*rF&RAT`n!Eea!jB#x5?NF2#(+F~Jqpt)2Ayw7=wL z^=H852Uyt%1Vt1_D8>ZG8qs2%=&?bJ*d%6b5i72dT5Jw3QJ3M4HLx_mqKoDc%8}>fXyOztYD#Rb7j0@ui^6pj zq6_#LBvW9Htx{n_VV-0p3b){sRk5X5-mM~qkxSSV6cClNbW`J}%8{Hf6lDJugf`;dxxrkhFYC&pMY&;_{|+)Sdt=p2eiTJ%@Ip zVKU||>2NY89)xp7Wsh@PK45|gk)95WdjpuPhQU3Q-mb7066xX(Xtk#Ndk2#yD2yo zWa)w`P+IX_<$m|HCcGohYpVSg)QE8ft=LT<15v5mk+_B|l;BJR2R*AaG8XN_DDokd zNR1ED*@w}Pd60(yD;(xjhNZi)m(Jfo0~Lz)@xewKOOTlCMj!RF{$#&|Z0 z{rMgnJx$ns9=>3sK2Ilb$!zrH{S;)J(pki^(e#Y<8`DF65%RqNE87Hta6_~3IxI)C zbQ?Rkt=YJ(bjqkj(8_Mp&9!3Q&^pkru~`2R`ZEHKLBU=1?%k?A7R^Vp5#4RhQ@;4LA2B~;uByH3yDPU_ zVc`asBnFOFV0h0^a2Gxh+=ZUpAhqEv2w?8NPtjfIxC}ao(M@+zyX699D@790-RU*> zB{;P-1aJVDD0n#K>(XMr@S_>ymq91ZV8%IQCyB!A(o%cr^8}bjnqeZlNqxS02EQhq zjWfa#9hgLPNRZzES0!AjT?O$ytgH(H>239v4f&37S6f_Lslmp7i34p8!y@rx=6Pkq z^QvwG-SNENW`0z8RJW-xWoy~P0gED-FK3xthtS-WLS}IuRwg?Kn(>yh?DWo+o&MoK ze6=wU6;(410~B%jy;6fp%@{Qs)EKDdj;zty$WlC2GfGVt;+&qim2#%Yu7a)Pr80Ek TkkYm;NI*#@)gZo*) literal 0 HcmV?d00001 diff --git a/modules/participant.py b/modules/participant.py new file mode 100644 index 0000000..6afc300 --- /dev/null +++ b/modules/participant.py @@ -0,0 +1,83 @@ +from PyQt5.QtWidgets import ( + QWidget, + QVBoxLayout, + QLineEdit, + QComboBox, + QPushButton, + QFormLayout, + QMessageBox, + QSpacerItem, + QSizePolicy, + QHBoxLayout, + QGroupBox, + QSpinBox +) + +from PyQt5.QtCore import Qt + + +class Participant(QWidget): + def __init__(self): + super().__init__() + + main_layout = QVBoxLayout() + main_layout.addSpacerItem( + QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)) + + forms_container = QGroupBox() + forms_container.setFixedSize(600, 500) + + forms_layout = QFormLayout() + + # Identifier + self.identifier_input = QLineEdit() + self.identifier_input.setPlaceholderText("Enter Identifier") + forms_layout.addRow("Participant Identifier:", self.identifier_input) + + # Age + self.age_input = QSpinBox() + self.age_input.setRange(0, 120) + forms_layout.addRow("Participant Age (0-120):", self.age_input) + + # Sex + self.sex_input = QComboBox() + self.sex_input.addItems(["Select", "Male", "Female", "Other"]) + forms_layout.addRow("Sex:", self.sex_input) + + # Begin button + self.begin_button = QPushButton("Begin") + self.begin_button.clicked.connect(self.on_begin_clicked) + forms_layout.addWidget(self.begin_button) + + box_layout = QVBoxLayout() + box_layout.setAlignment(Qt.AlignCenter) + box_layout.addLayout(forms_layout) + forms_container.setLayout(box_layout) + + centered_layout = QHBoxLayout() + centered_layout.addStretch() + centered_layout.addWidget(forms_container, alignment=Qt.AlignCenter) + centered_layout.addStretch() + + main_layout.addLayout(centered_layout) + main_layout.addSpacerItem( + QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)) + + self.setLayout(main_layout) + + def on_begin_clicked(self): + """Handler for begin button""" + # include logic for saving participant data to file here also + identifier = self.identifier_input.text().strip() + age = self.age_input.value() + sex = self.sex_input.currentText() + + if not identifier: + QMessageBox.warning( + self, 'Input Error', 'Please enter a Participant Identifier.') + elif sex == 'Select': + QMessageBox.warning( + self, 'Input Error', 'Please select your sex.') + else: + QMessageBox.information( + self, 'Success', f'Participant Registered: {identifier}, Age: {age}, Sex: {sex}')