Last Updated on 2021-05-11 by Clay
Recently, the GUI I'm developing is often in a state of cessation. I think maybe I need "QThread" to help me. But when I learning how to use QThread, I was surprised to find one thing.
The tutorial in internet, it show me the LCD component is very slow, I need to use QThread to solve it ......
But, my computer seems to be great. The above phenomenon did not happen at all.
But again, after I researching QTimer, I finally found that using QTimer will open another thread.
So sad, I thought my notebook was great.
My notes maybe note QThread someday, but I used it in my program and it didn't improve performance. I guess my problem is using too many tools filled the memory, so QThread has no effect is normal.
OK, today I will note how to use QTimer and QlcdNumber!
if you want to read the official tutorial, maybe you can refer here: https://www.riverbankcomputing.com/static/Docs/PyQt5/index.html?highlight=qicon
QTimer
As the name suggests, QTimer is a kind of timer in PyQt5. We can use it to time.
First we take a look for sample code. Today I give up to put on my ui file, you can put the components freely.
My interface has a LCD components, and two buttons.
I want to use Qtimer for timing, Add LCD display every 1 second.
# -*- coding: utf-8 -*- from PyQt5 import QtWidgets from PyQt5.QtCore import QTimer from thread_test import Ui_MainWindow import sys class MainWindow(QtWidgets.QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) # QTimer self.timer = QTimer() # QPushButton self.ui.pushButton.clicked.connect(self.timeGo) self.ui.pushButton_2.clicked.connect(self.timeStop) # Other self.timer.timeout.connect(self.LCDEvent) self.s = 0 def timeGo(self): self.timer.start(100) def timeStop(self): self.timer.stop() def LCDEvent(self): self.s += 1 self.ui.lcdNumber.display(self.s) if __name__ == '__main__': app = QtWidgets.QApplication([]) window = MainWindow() window.show() sys.exit(app.exec_())
We can see:
def timeGo(self): self.timer.start(100)
timeGo()
is start to time. It should be noted that the unit here is ms.
That is, one ms is equal to one thousandth of a second. Here is how fast I set it up, once every 0.1 second.
self.timer.timeout.connect(self.LCDEvent)
timeout will trigger LCDEvent()
function.
def LCDEvent(self): self.s += 1 self.ui.lcdNumber.display(self.s)
Display our LCD components:
timeStop()
is let my timer sleep.
QLCDNumber
QLCDNumber is a LCD components, it can show a LCD in our GUI. And we can show number on it.
You just only use display()
function.
setBinMode()
: BinarysetOctMode()
: OctalsetDecMode()
: Decimal (Default)setHexMode()
: Hexadecimal
In addition, this component can also display text.
self.ui.lcdNumber.display('22:10')
Output:
So, if we want to create a alarm clock, we can use LCDNumber to make it.
Read More
- [PyQt5] Tutorial(1) Install PyQt5 and print "Hello World!"
- [PyQt5] Tutorial(2) QLabel, QLineEdit, QPushButton
- [PyQt5] Tutorial(3) QMainWindow, QIcon, QPixmap, QPalette
- [PyQt5] Tutorial(4) Menu, Toolbar
- [PyQt5] Tutorial(5) ProgressBar, HorizontalSlider, QDial
- [PyQt5] Tutorial(6) comboBox、BoxLayout
- [PyQt5] Tutorial(7) hide, show, auto fit window size
- [PyQt5] Tutorial(8) QTimer, QlcdNumber
- [PyQt5] Tutorial(9) Use QCalendar to create a calendar component
- [PyQt5] Tutorial(10) Use keyboard to enter command and listen mouse clicked
- [PyQt5] Tutorial(11) Use QColorDialog to let user select color