如何批量设置所有QKeySequenceEdit的ClearButtonEnabled属性?
批量启用QKeySequenceEdit清除按钮的方法
你可以通过以下两种方式实现批量设置,无需逐个调用方法:
方法一:遍历所有子控件筛选目标类型
利用findChildren方法获取窗口中所有QKeySequenceEdit实例,统一设置清除按钮:
from PyQt6 import QtCore, QtWidgets from PyQt6.QtCore import * from PyQt6.QtWidgets import * from PyQt6 import uic import sys class MainWindow(QDialog): def __init__(self): super().__init__() uic.loadUi("test.ui",self) # 批量设置所有QKeySequenceEdit的清除按钮 for edit in self.findChildren(QKeySequenceEdit): edit.setClearButtonEnabled(True) if __name__ == "__main__": app = QApplication(sys.argv) mainwindow = MainWindow() mainwindow.show() app.exec()
这种方法不依赖控件命名规则,会自动匹配窗口内所有同类型控件。
方法二:利用控件命名规律批量获取
如果你的控件命名有固定规律(比如keySequenceEdit、keySequenceEdit_2这类),可以通过getattr循环获取并设置:
from PyQt6 import QtCore, QtWidgets from PyQt6.QtCore import * from PyQt6.QtWidgets import * from PyQt6 import uic import sys class MainWindow(QDialog): def __init__(self): super().__init__() uic.loadUi("test.ui",self) # 按命名规律批量设置 for idx in range(1, 5): # 处理第一个控件不带后缀的情况 widget_name = "keySequenceEdit" if idx == 1 else f"keySequenceEdit_{idx}" edit = getattr(self, widget_name) edit.setClearButtonEnabled(True) if __name__ == "__main__": app = QApplication(sys.argv) mainwindow = MainWindow() mainwindow.show() app.exec()
这种方法适合控件命名规整的场景,代码更贴合你的现有控件命名逻辑。
内容的提问来源于stack exchange,提问作者wookidookik123
相关产品推荐
相关产品推荐

