import sys from PySide6 import QtWidgets from PySide6.QtWidgets import ( QApplication, QWidget, QRadioButton, QButtonGroup, QGroupBox, QVBoxLayout, QHBoxLayout, QLabel, QFileDialog, ) from PySide6.QtCore import Slot import json import os from readdisk import ReadDiskWindow from ui_main_window import Ui_MainWindow from ui_read_disk import Ui_ReadDialog # Inherit only from the Qt base class class MainWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() self.settings = {} # Create an instance of the UI class self.ui = Ui_MainWindow() # Call its setupUi method, passing in the current window (self) self.ui.setupUi(self) # 1. Create the logical group. Pass `self` for parentage. self.logical_button_group = QButtonGroup(self) # 2. Add all radio buttons from different containers. # Assign a unique integer ID to each one. This is best practice. self.logical_button_group.addButton(self.ui.rb_read, 1) self.logical_button_group.addButton(self.ui.rb_write, 2) self.logical_button_group.addButton(self.ui.rb_clean_heads, 3) self.logical_button_group.addButton(self.ui.rb_erase_disk, 4) self.logical_button_group.addButton(self.ui.rb_convert_files, 5) self.logical_button_group.addButton(self.ui.rb_info, 6) self.logical_button_group.addButton(self.ui.rb_measure, 7) self.logical_button_group.addButton(self.ui.rb_pin_level, 8) self.logical_button_group.addButton(self.ui.rb_reset, 9) self.logical_button_group.addButton(self.ui.rb_rpm, 10) self.logical_button_group.addButton(self.ui.rb_seek, 11) self.logical_button_group.addButton(self.ui.rb_delays, 12) self.logical_button_group.addButton(self.ui.rb_update_firmware, 13) self.ui.rb_read.setChecked(True) self.ui.pb_close.clicked.connect(self.close) self.ui.action_quit.triggered.connect(self.close) self.ui.pb_execute.clicked.connect(self.on_execute) @Slot() def on_execute(self): read_disk_window = ReadDiskWindow() if self.load_settings("settings.json"): read_disk_window.set_settings(self.settings) read_disk_window.exec() self.settings = read_disk_window.get_settings() self.save_settings("settings.json") def load_settings(self, file_name): if file_name: if os.path.exists(file_name): with open(file_name, 'r') as f: self.settings = json.load(f) return True return False def save_settings(self, file_name): if file_name: with open(file_name, 'w') as f: json.dump(self.settings, f, indent=2) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec())