PyQt5+Pycharm, QThread

一、创建窗体控件

untitled.ui: 

PushButton, PushButton_2, PushButton_3

lineEdit, lineEdit_2, lineEdit_3

二、编译窗体

自动生成untitled.py

三、新建py文件

myDemo.py

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from untitled import *
from PyQt5.QtCore import pyqtSlot, QThread, pyqtSignal
import time

class longTimeThread(QThread):
    number_singal = pyqtSignal(int, object)
    def __init__(self, object):
        super().__init__()
        self.object = object
    def run(self):
        for i in range(1000):
            self.number_singal.emit(i, self.object)
            time.sleep(0.1)

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.thread1 = longTimeThread(self.lineEdit_2)  # 创建一个线程
        self.thread2 = longTimeThread(self.lineEdit_3)  # 创建一个线程
        self.thread1.number_singal.connect(self.updates)
        self.thread2.number_singal.connect(self.updates)

    @pyqtSlot()
    def on_pushButton_clicked(self):
        self.lineEdit.setText('Hello World')

    @pyqtSlot()
    def on_pushButton_2_clicked(self):
        self.thread1.start()

    @pyqtSlot()
    def on_pushButton_3_clicked(self):
        self.thread2.start()

    def updates(self, number, object):
        object.setText(str(number))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = MainWindow()
    ui.show()
    sys.exit(app.exec_())

四、运行

点击PushButton_2, 更新lineEdit_2, 每0.1s加1

点击PushButton_3, 更新lineEdit_3, 每0.1s加1

lineEdit_2和lineEdit_3的更新互不影响,窗体不会卡死。

### 如何在 PyCharm 中使用 PyQt5 进行开发 #### 安装必要的软件包 为了能够在 PyCharm 中顺利使用 PyQt5 开发图形用户界面应用,需安装 `PyQt5` 及其相关工具。这可以通过命令行执行如下指令完成: ```bash pip install PyQt5 pyqt5-tools pyqt5designer ``` 上述操作会将 PyQt5 和一些辅助工具一并加入到 Python 的环境中去[^2]。 #### 配置 Qt Designer 并转换 `.ui` 文件至 Python 代码 一旦所有必需组件都已就位,则可着手准备 GUI 设计工作。此时应该启动 Qt Designer 来绘制所需的 UI 布局,并保存为 .ui 格式的文件。之后利用特定的命令把该.ui文件转化为对应的Python脚本形式以便于后续编码处理。具体做法是在终端输入下面这条语句: ```bash D:\pyQTDevelop\venv\Scripts\python.exe -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py ``` 这里 `$FileName$` 表示待转化的具体 ui 文件名;而 `$FileNameWithoutExtension$` 则指明输出 python 文件的名字(不带扩展)。另外需要注意的是前面部分代表虚拟环境下解释器的位置,在实际运用时应替换成本机上确切路径[^3]。 #### 编写主程序逻辑并与UI关联起来 当所有的准备工作完成后就可以正式进入编写业务逻辑阶段了。通常情况下我们会新建一个 main.py 或者其他名称作为入口函数所在之处。在此处导入之前由`.ui`转出来的模块以及其他需要用到的标准库或第三方库,再通过继承的方式让自定义类接管原生窗口对象从而实现对其属性方法重载达到定制化需求的目的。 以下是简单的例子展示如何加载已经编译好的 UI 类并且显示出来: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow from generated_ui_file import Ui_MainWindow # 替换成你自己的UI文件名字 class MyMainWindow(QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) if __name__ == "__main__": app = QApplication(sys.argv) window = MyMainWindow() window.show() sys.exit(app.exec_()) ``` 这段代码首先引入了系统级参数解析以及核心部件管理等功能,接着实例化了一个基于预设模板的新窗体并将它呈现给用户查看[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值