Skip to content

Commit 2191429

Browse files
committed
add qthread
1 parent bc4eb1b commit 2191429

File tree

5 files changed

+180
-0
lines changed

5 files changed

+180
-0
lines changed

QThread/gui/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# -*- coding: utf-8 -*-
2+
3+
4+
"""
5+
@author: Xu Gaoxiang
6+
@license: MIT
7+
@email: xugx.ai@gmail.com
8+
@site: https://xugaoxiang.com
9+
@software: PyCharm
10+
@file: __init__.py.py
11+
@time: 2020/4/20 21:12
12+
"""

QThread/gui/mainwindow.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import time
2+
3+
from PyQt5.QtWidgets import QMainWindow
4+
from PyQt5.QtCore import QThread, pyqtSignal
5+
from .ui_mainwindow import Ui_MainWindow
6+
7+
8+
class MainWindow(QMainWindow, Ui_MainWindow):
9+
def __init__(self, parent=None):
10+
super(MainWindow, self).__init__(parent)
11+
self.setupUi(self)
12+
13+
self.thread = Worker()
14+
self.thread.sig.connect(self.updateLabel)
15+
16+
self.pushButton.clicked.connect(self.buttonClicked)
17+
18+
def buttonClicked(self):
19+
self.thread.start()
20+
21+
def updateLabel(self, text):
22+
self.label.setText(text)
23+
24+
25+
class Worker(QThread):
26+
sig = pyqtSignal(str)
27+
28+
def __init__(self, parent=None):
29+
super(Worker, self).__init__(parent)
30+
self.count = 0
31+
32+
def run(self):
33+
34+
while True:
35+
time.sleep(1)
36+
self.count += 1
37+
if (self.count % 5 == 0):
38+
self.sig.emit(f"已执行{self.count}秒")

QThread/gui/ui_mainwindow.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# -*- coding: utf-8 -*-
2+
3+
# Form implementation generated from reading ui file '.\qthread.ui'
4+
#
5+
# Created by: PyQt5 UI code generator 5.13.0
6+
#
7+
# WARNING! All changes made in this file will be lost!
8+
9+
10+
from PyQt5 import QtCore, QtGui, QtWidgets
11+
12+
13+
class Ui_MainWindow(object):
14+
def setupUi(self, MainWindow):
15+
MainWindow.setObjectName("MainWindow")
16+
MainWindow.resize(800, 600)
17+
self.centralwidget = QtWidgets.QWidget(MainWindow)
18+
self.centralwidget.setObjectName("centralwidget")
19+
self.widget = QtWidgets.QWidget(self.centralwidget)
20+
self.widget.setGeometry(QtCore.QRect(250, 190, 301, 81))
21+
self.widget.setObjectName("widget")
22+
self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
23+
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
24+
self.horizontalLayout.setObjectName("horizontalLayout")
25+
self.label = QtWidgets.QLabel(self.widget)
26+
self.label.setObjectName("label")
27+
self.horizontalLayout.addWidget(self.label)
28+
self.pushButton = QtWidgets.QPushButton(self.widget)
29+
self.pushButton.setMinimumSize(QtCore.QSize(50, 50))
30+
self.pushButton.setMaximumSize(QtCore.QSize(121, 51))
31+
self.pushButton.setObjectName("pushButton")
32+
self.horizontalLayout.addWidget(self.pushButton)
33+
MainWindow.setCentralWidget(self.centralwidget)
34+
self.menubar = QtWidgets.QMenuBar(MainWindow)
35+
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
36+
self.menubar.setObjectName("menubar")
37+
MainWindow.setMenuBar(self.menubar)
38+
self.statusbar = QtWidgets.QStatusBar(MainWindow)
39+
self.statusbar.setObjectName("statusbar")
40+
MainWindow.setStatusBar(self.statusbar)
41+
42+
self.retranslateUi(MainWindow)
43+
QtCore.QMetaObject.connectSlotsByName(MainWindow)
44+
45+
def retranslateUi(self, MainWindow):
46+
_translate = QtCore.QCoreApplication.translate
47+
MainWindow.setWindowTitle(_translate("MainWindow", "QThread"))
48+
self.label.setText(_translate("MainWindow", "TextLabel"))
49+
self.pushButton.setText(_translate("MainWindow", "PushButton"))

QThread/main.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import sys
2+
3+
from PyQt5.QtWidgets import QApplication
4+
5+
from gui.mainwindow import MainWindow
6+
7+
if __name__ == '__main__':
8+
app = QApplication(sys.argv)
9+
main_window = MainWindow()
10+
main_window.show()
11+
sys.exit(app.exec_())

QThread/qthread.ui

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>MainWindow</class>
4+
<widget class="QMainWindow" name="MainWindow">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>800</width>
10+
<height>600</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>QThread</string>
15+
</property>
16+
<widget class="QWidget" name="centralwidget">
17+
<widget class="QWidget" name="">
18+
<property name="geometry">
19+
<rect>
20+
<x>250</x>
21+
<y>190</y>
22+
<width>301</width>
23+
<height>81</height>
24+
</rect>
25+
</property>
26+
<layout class="QHBoxLayout" name="horizontalLayout">
27+
<item>
28+
<widget class="QLabel" name="label">
29+
<property name="text">
30+
<string>TextLabel</string>
31+
</property>
32+
</widget>
33+
</item>
34+
<item>
35+
<widget class="QPushButton" name="pushButton">
36+
<property name="minimumSize">
37+
<size>
38+
<width>50</width>
39+
<height>50</height>
40+
</size>
41+
</property>
42+
<property name="maximumSize">
43+
<size>
44+
<width>121</width>
45+
<height>51</height>
46+
</size>
47+
</property>
48+
<property name="text">
49+
<string>PushButton</string>
50+
</property>
51+
</widget>
52+
</item>
53+
</layout>
54+
</widget>
55+
</widget>
56+
<widget class="QMenuBar" name="menubar">
57+
<property name="geometry">
58+
<rect>
59+
<x>0</x>
60+
<y>0</y>
61+
<width>800</width>
62+
<height>23</height>
63+
</rect>
64+
</property>
65+
</widget>
66+
<widget class="QStatusBar" name="statusbar"/>
67+
</widget>
68+
<resources/>
69+
<connections/>
70+
</ui>

0 commit comments

Comments
 (0)