假设了一个场景,在处理文件的时候遇到错误,弹出警告窗口,三个按钮分别为重试、忽略或取消,可是警告窗口未响应,没有显示内容
进度条窗口,附代码链接: https://gist.github.com/allrobot/3a6449b4389a1e28a907702d38d7422b
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import Script
from Vam_Dialogs import InterruptDialog
from Vam_Modules import ScanPackages
class ShowProgressBar(QWidget):
def __init__(self, MaxNumber: int,worker):
super().__init__()
self.worker=worker
# 忽略代码...
@pyqtSlot(str)
def show_dialog(self,text: str):
self.dialog = InterruptDialog.InterruptProcessing(text)
self.dialog.retry.connect(self.worker.resume)
self.dialog.ignored.connect(self.worker.ignore)
self.dialog.cancel.connect(progress_bar.progress_close)
self.dialog.cancel.connect(self.worker.quit)
'''输出依赖'''
QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
QCoreApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
app = QApplication(sys.argv)
worker = ScanPackages.Worker(r'I:\VAM\Vam Pure\AddonPackages')
progress_bar = ShowProgressBar(worker.exist_vars_path.__len__(),worker)
worker.intReady.connect(progress_bar.update_progress_bar)
worker.started.connect(worker.scan_meta_json)
worker.showdialog.connect(worker.pause)
worker.showdialog.connect(progress_bar.show_dialog)
worker.finished.connect(progress_bar.progress_close)
worker.start()
app.exec_()
QThread 代码,附代码链接: https://gist.github.com/allrobot/14be27794f8a9cd7dd08de40a3e443e9
def scan_meta_json(self) -> None:
num=0
for file in self.exist_vars_path:
self.intReady.emit(self.CurrentFiles)
num+=1
# 上锁
self.mutex.lock()
if num==500:
self.error = True
self.error_text = f'AddonPackages{file[1:]}\n\n 文件执行权限获取失败。\n\n 请确认文件是否被系统占用。\n\n 如果已关闭文件,点击返回继续处理操作任务。'
self.showdialog.emit(self.error_text)
if self.isPause:
self.condition.wait(self.mutex)
self.CurrentFiles += 1
print(file)
timer = QTimer()
timer.setSingleShot(True)
timer.start(1)
loop = QEventLoop()
timer.timeout.connect(loop.quit)
loop.exec()
self.mutex.unlock()
os.chdir(self.current_path)
self.finished.emit()
请问为啥未响应?对话框自测了,能正常打开,但进度条没法调用对话框显示内容。。。
对话框代码: https://gist.github.com/allrobot/aad2aa88f8ccdd8043a857478eebfab7
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.