PyQt5:移除QProgressDialog不确定进度时的百分比标签及预留空间
解决QProgressDialog不确定状态下移除百分比预留空间的方法
当QProgressDialog处于不确定进度模式时,界面会预留出显示百分比数字的空白区域,以下两种方法可以移除这个预留空间:
方法一:通过样式表隐藏百分比标签
利用不确定状态下百分比标签会被标记为禁用的特性,通过样式表匹配并隐藏该标签:
from PyQt5.QtWidgets import QProgressDialog from PyQt5.QtCore import Qt progress_dialog = QProgressDialog("加载中...", "取消", 0, 0) progress_dialog.setWindowModality(Qt.WindowModal) # 开启不确定进度模式 progress_dialog.setRange(0, 0) # 隐藏禁用状态的百分比标签 progress_dialog.setStyleSheet("QLabel#qt_dialog_label:disabled { visibility: hidden; }") progress_dialog.exec_()
方法二:自定义子类动态控制标签显示
通过子类化QProgressDialog,重写setRange方法,根据进度模式动态显示/隐藏百分比标签:
from PyQt5.QtWidgets import QProgressDialog, QLabel from PyQt5.QtCore import Qt class CustomProgressDialog(QProgressDialog): def __init__(self, label_text, cancel_btn_text, min_val, max_val, parent=None): super().__init__(label_text, cancel_btn_text, min_val, max_val, parent) self.percent_label = self.findChild(QLabel, "qt_dialog_label") def setRange(self, min_val, max_val): super().setRange(min_val, max_val) # 0-0表示不确定模式,隐藏百分比标签 if min_val == 0 and max_val == 0: self.percent_label.hide() else: self.percent_label.show() # 使用自定义对话框 progress_dialog = CustomProgressDialog("加载中...", "取消", 0, 0) progress_dialog.setWindowModality(Qt.WindowModal) progress_dialog.exec_()

内容的提问来源于stack exchange,提问作者Guruleni
相关产品推荐
相关产品推荐

