QProgressDialog 自动弹出的问题

本文探讨了使用QProgressDialog时遇到的一个特殊现象:即使在创建后立即调用hide方法,控件仍会在一段时间后自动显示。文章指出,这是因为QProgressDialog在创建后即开始计时,到达一定时间阈值后会自动激活并显示。为解决此问题,作者建议在创建QProgressDialog实例后立即调用其reset方法。

使用QProgressDialog的时候,原来打算new以后立刻hide,然后需要的时候再show,但是发现这个hide没有效果,通过网上查阅资料,
https://blog.youkuaiyun.com/qing666888/article/details/84895047

发现在new以后会开始计时,等到一定时间就会自动show,可以在new以后立刻调用reset()就可以解决这个问题

要在 PySide6 界面中实现点击搜索按钮后进行全盘搜索时弹出提示框表明程序正在运行,搜索完成后提示框自动关闭,可使用 `QProgressDialog` 类。以下是示例代码: ```python import sys import time import os from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QProgressDialog from PySide6.QtCore import Qt, QThread, Signal class SearchThread(QThread): search_finished = Signal() def run(self): # 模拟全盘搜索 time.sleep(5) self.search_finished.emit() class MainWindow(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() self.search_button = QPushButton("搜索") self.search_button.clicked.connect(self.start_search) layout.addWidget(self.search_button) self.setLayout(layout) def start_search(self): # 创建进度对话框 progress_dialog = QProgressDialog("正在搜索...", None, 0, 0, self) progress_dialog.setWindowModality(Qt.WindowModal) progress_dialog.setCancelButton(None) progress_dialog.show() # 启动搜索线程 self.search_thread = SearchThread() self.search_thread.search_finished.connect(lambda: progress_dialog.close()) self.search_thread.start() if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec()) ``` 此代码创建了一个简单的 PySide6 界面,包含一个搜索按钮。点击按钮时,会弹出 `QProgressDialog` 提示框,同时启动一个新线程进行模拟的全盘搜索。搜索完成后,`search_finished` 信号被触发,提示框自动关闭。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值