python - Python shutil.copy 导致 PyQt GUI 冻结
问题描述
我有一个由 PyQt 创建的 GUI。它适用于复制 Tkinter 文件选择对话框选择的任何文件。我选择了要发送的文件,但是当我尝试发送它时,shutil.copy() 函数开始运行。然而,与此同时,GUI 冻结并且无论如何都没有反应。
class main(QMainWindow):
def __init__(self):
super().__init__()
self.MyUI()
self.root = Tk()
self.root.withdraw()
self.isAlive = True
self.lock= threading.Lock()
self.angleDiffPitch = 0
self.angleDiffRoll = 0
self.angleDiffYaw = 0
self.tempDataForPacketNumber = 0
# gui.py
self.gui = gui()
self.gui.setupUi(self)
self.msg = self.gui.msg
self.m1 = mesh.Mesh.from_file('assets/uydu.stl')
self.plottingThread = threading.Thread(
target=self.pltAndSimFunc)
self.plottingThread.daemon = True
# start button
self.gui.baslatButton.clicked.connect(self.startGcs)
# stop button
self.gui.durdurButton.clicked.connect(self.stopGcs)
# video secme
self.gui.secButton.clicked.connect(self.chooseFunc)
# ayrilma
self.gui.ayrilButton.clicked.connect(self.ayrilFunc)
# video gönderme
self.gui.gonderButton.clicked.connect(self.sendFileThread)
# motor tahrik
self.gui.tahrikButton.clicked.connect(self.tahrikFunc)
# motor tahrik stop
self.gui.tahrikButtonStop.clicked.connect(self.tahrikFuncStop)
def chooseFunc(self):
fileName = askopenfile(mode='r')
self.gui.lineEdit.setText(str(fileName.name))
self.gui.gonderButton.setEnabled(True)
self.DIRECTORY = self.gui.lineEdit.text()
self.TARGET_DIRECTORY = r"Z:/"
self.BASE_NAME = os.path.basename(self.DIRECTORY)
def sendFile(self):
shutil.copy(self.DIRECTORY, self.TARGET_DIRECTORY+self.BASE_NAME)
if(os.path.exists(self.TARGET_DIRECTORY+self.BASE_NAME)):
self.msg.setWindowTitle('İşlem Tamamlandı')
self.msg.setText('Dosya gönderimi başarıyla tamamlandı')
self.msg.setIcon(QtWidgets.QMessageBox.Information)
x = self.msg.exec_()
dt.videoPaketGuncellemeKomut()
def sendFileThread(self):
sendThread = threading.Thread(target=self.sendFile)
sendThread.start()
我尝试使用线程,但它不起作用,也许我无法编写它的结构。我怎么解决这个问题?这是我的代码:
感谢您的帮助?:)
解决方案
推荐阅读
- html - 奇怪的 len 函数(或字符串)行为
- scala - 在 scala 2.13.6+ 库中,自动生成带有 `$extension` 后缀的函数的目的是什么?
- jquery - 如何在页面重新加载后使 jQuery 滚动动画工作?
- mysql - 替换MySql中JSON文档中键值对中的所有值
- javascript - Google 富文本编辑器演示未在本地主机上运行
- docker - 如何解决长期停留在“新”状态的 docker swarm 服务?[通过重新启动 swarm 集群解决短期问题]
- node.js - 为什么在咨询 mongo 时会出现服务器错误?
- android - Android 上的 Crashlytics 和 React Native
- javascript - 这种情况下 React useRef 和全局变量的区别
- c - gprof 以 0% 显示每个函数(甚至是摘要)