Code: Select all
from PySide6.QtWidgets import QApplication, QMainWindow, QComboBox, QFrame, QVBoxLayout, QLabel, QSpinBox
settings_list = [{'name': 'Config 1', 'height': 10}, {'name': 'Config 2', 'height': 5}]
class PageDimensionsEditor(QMainWindow):
def __init__(self):
super().__init__()
frame = QFrame()
layout = QVBoxLayout()
# Grab the settings
self.current_index = 0
self.settings = settings_list[self.current_index]
names = [version['name'] for version in settings_list]
self.versionComboBox = QComboBox()
self.versionComboBox.setEditable(True)
self.versionComboBox.addItems(names)
self.versionComboBox.editTextChanged.connect(lambda value: self.change('name', value))
self.versionComboBox.currentIndexChanged.connect(lambda index: self.switchItem(index))
layout.addWidget(self.versionComboBox)
self.edits = {}
# Create a QSpinBox to change the height
layout.addWidget(QLabel("Height:"))
self.edits['height'] = QSpinBox(minimum=1, maximum=40, value=self.settings['height'])
self.edits['height'].valueChanged.connect(lambda value: self.change('height', value))
layout.addWidget(self.edits['height'])
frame.setLayout(layout)
self.setCentralWidget(frame)
def switchItem(self, index):
print(f"New Index: {index}")
self.current_index = index
self.settings = settings_list[index]
self.updateEntries()
def updateEntries(self):
for key, value in self.edits.items():
self.edits[key].setValue(self.settings[key])
def change(self, which, value):
print(f"{which} of settings in index {self.current_index} is changed to: {value}")
self.settings[which] = value
app = QApplication([])
window = PageDimensionsEditor()
window.show()
app.exec()
Wie kann ich die Ausführung des Signals editTextChanged unterdrücken, wenn ich das Element ändere, oder zumindest die erste Ausführung der mit currentIndexChanged verbundenen Funktion erzwingen?
Um den Code effizienter zu machen, wie kann ich als sekundäre Frage vorübergehend die Ausführung der Signale der QSpinBox unterdrücken, wenn ich sie nach dem Umschalten auf Current aktualisiere ausgewähltes Element?
Mobile version