| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import sys
- from PyQt5.QtCore import Qt
- from PyQt5.QtWidgets import QMainWindow, QFormLayout, QLineEdit, QSpinBox, QComboBox, QPushButton, QApplication, QWidget
- model = {
- "name": "Johnina Smith",
- "age": 10,
- "favorite_icecream": "Vanilla",
- }
- class MainWindow(QMainWindow):
- def __init__(self):
- super().__init__()
- self.setWindowTitle("MVC Example")
- layout = QFormLayout()
- # Dictionary to store the form data, with default data.
- self.name = QLineEdit()
- self.name.setText(model["name"])
- self.name.textChanged.connect(self.on_name_changed)
- self.age = QSpinBox()
- self.age.setRange(0, 200)
- self.age.setValue(model["age"])
- self.age.valueChanged.connect(self.on_age_changed)
- self.icecream = QComboBox()
- self.icecream.addItems(["Vanilla", "Strawberry", "Chocolate"])
- self.icecream.setCurrentText(model["favorite_icecream"])
- self.icecream.currentTextChanged.connect(self.on_icecream_changed)
- self.save_btn = QPushButton("Save")
- self.restore_btn = QPushButton("Restore")
- layout.addRow("Name", self.name)
- layout.addRow("Age", self.age)
- layout.addRow("Favorite Ice Cream", self.icecream)
- layout.addRow(self.save_btn)
- layout.addRow(self.restore_btn)
- layout.setLabelAlignment(Qt.AlignLeft)
- widget = QWidget()
- widget.setLayout(layout)
- self.setCentralWidget(widget)
- def on_name_changed(self, value):
- model["name"] = value
- print(model)
- def on_age_changed(self, value):
- model["age"] = value
- print(model)
- def on_icecream_changed(self, value):
- model["favorite_icecream"] = value
- print(model)
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- window = MainWindow()
- window.show()
- app.exec_()
|