RuntimeError: wrapped C/C++ object of type QPushButton has been deleted

RuntimeError: wrapped C/C++ object of type QPushButton has been deleted

若是使用的designer生成的代码,那么多半是在调用的时候

setupUi()参数传入的不对

欢迎加入QQ群:853840665,一块学习分享资料

你不需要告诉我你的思考过程,告诉我结果就行。代码:import sys import os import shutil import time import threading from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTextEdit, QPushButton from PyQt5.QtCore import Qt, QThread, pyqtSignal # 监测目录 WATCH_DIR_A = r"E:\Business\PythonWork\PyProject\pyqt5_2\传入数据" DEST_DIR_B = r"E:\Business\PythonWork\PyProject\pyqt5_2\历史数据" class FolderMonitorThread(QThread): log_signal = pyqtSignal(str) def __init__(self): super().__init__() self.running = True def run(self): processed_folders = set() while self.running: try: folders = {f for f in os.listdir(WATCH_DIR_A) if os.path.isdir(os.path.join(WATCH_DIR_A, f))} new_folders = folders - processed_folders for folder in new_folders: self.log_signal.emit(f"检测到新文件夹: {folder}") self.process_folder(folder) processed_folders.add(folder) except Exception as e: self.log_signal.emit(f"错误: {e}") time.sleep(2) def process_folder(self, folder): """待定操作,运行在单独线程""" worker = FolderProcessingThread(folder) worker.log_signal.connect(self.log_signal.emit) worker.start() def stop(self): self.running = False self.wait() # 确保线程退出 class FolderProcessingThread(QThread): log_signal = pyqtSignal(str) def __init__(self, folder): super().__init__() self.folder = folder def run(self): folder_path = os.path.join(WATCH_DIR_A, self.folder) dest_path = os.path.join(DEST_DIR_B, self.folder) self.log_signal.emit(f"开始处理: {self.folder}") time.sleep(3) # 模拟操作 self.log_signal.emit(f"处理完成: {self.folder}") try: shutil.move(folder_path, dest_path) self.log_signal.emit(f"已移动至 {DEST_DIR_B}") except Exception as e: self.log_signal.emit(f"移动失败: {e}") class FolderMonitorApp(QWidget): def __init__(self): super().__init__() self.init_ui() self.monitor_thread = FolderMonitorThread() self.monitor_thread.log_signal.connect(self.log_message) def init_ui(self): self.setWindowTitle("文件夹监测") self.setGeometry(100, 100, 500, 400) layout = QVBoxLayout() self.log_display = QTextEdit(self) self.log_display.setReadOnly(True) layout.addWidget(self.log_display) self.start_button = QPushButton("开始监测", self) self.start_button.clicked.connect(self.start_monitoring) layout.addWidget(self.start_button) self.stop_button = QPushButton("停止监测", self) self.stop_button.clicked.connect(self.stop_monitoring) self.stop_button.setEnabled(False) layout.addWidget(self.stop_button) self.setLayout(layout) def log_message(self, message): self.log_display.append(message) def start_monitoring(self): if not self.monitor_thread.isRunning(): self.monitor_thread.running = True self.monitor_thread.start() self.start_button.setEnabled(False) self.stop_button.setEnabled(True) self.log_message("监测启动...") def stop_monitoring(self): self.monitor_thread.stop() self.monitor_thread.quit() self.monitor_thread.wait() self.start_button.setEnabled(True) self.stop_button.setEnabled(False) self.log_message("监测已停止") if __name__ == "__main__": app = QApplication(sys.argv) window = FolderMonitorApp() window.show() sys.exit(app.exec_())
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冥焱破晓

开发不易,写文章更难,感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值