python pyqt5 多窗口_PYQT5开启多个线程和窗口,多线程与多窗口的交互实例

本文展示了如何在PyQT5中实现多窗口和多线程的交互。每当点击按钮,会弹出一个带有进度条的对话框,并启动一个子线程执行任务,更新进度条。关闭对话框时,相应子线程也会被关闭。通过线程池QThreadPool进行线程管理,限制最大线程数量,确保系统稳定。
摘要由CSDN通过智能技术生成

每点击一次按钮,弹出一个对话框(子窗口),同时开启一个子线程来执行任务并更新对话框内容,关闭对话框则关闭对应子线程

1. 建立一个简单的主界面和一个自定义对话框

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):

def setupUi(self, MainWindow):

MainWindow.setObjectName("MainWindow")

MainWindow.resize(327, 303)

self.centralwidget = QtWidgets.QWidget(MainWindow)

self.centralwidget.setObjectName("centralwidget")

self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)

self.gridLayout.setObjectName("gridLayout")

spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)

self.gridLayout.addItem(spacerItem, 0, 0, 1, 1)

self.pushButton = QtWidgets.QPushButton(self.centralwidget)

self.pushButton.setObjectName("pushButton")

self.gridLayout.addWidget(self.pushButton, 0, 1, 1, 1)

spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)

self.gridLayout.addItem(spacerItem1, 0, 2, 1, 1)

MainWindow.setCentralWidget(self.centralwidget)

self.menubar = QtWidgets.QMenuBar(MainWindow)

self.menubar.setGeometry(QtCore.QRect(0, 0, 327, 23))

self.menubar.setObjectName("menubar")

MainWindow.setMenuBar(self.menubar)

self.statusbar = QtWidgets.QStatusBar(MainWindow)

self.statusbar.setObjectName("statusbar")

MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)

self.pushButton.clicked.connect(MainWindow.open_dialog)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

def

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值