Python 如何使用pyqt5在运行时用另一个映像替换原始映像?
我试图使应用程序,可以显示天气网是下降或上升的图形表示。对于我正在使用pyqt5的任务,但当我尝试这样做时,它只是在同一个图像上一次又一次地重叠Python 如何使用pyqt5在运行时用另一个映像替换原始映像?,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我试图使应用程序,可以显示天气网是下降或上升的图形表示。对于我正在使用pyqt5的任务,但当我尝试这样做时,它只是在同一个图像上一次又一次地重叠 time2 = "" class DigitalClock(QLCDNumber, QWidget): def __init__(self, parent=None): super(DigitalClock, self).__init__(parent) self.setWindowTitle("Digital C
time2 = ""
class DigitalClock(QLCDNumber, QWidget):
def __init__(self, parent=None):
super(DigitalClock, self).__init__(parent)
self.setWindowTitle("Digital Clock")
self.showFullScreen()
self.mainlayout = QHBoxLayout()
timer = QTimer(self)
timer.timeout.connect(self.ui)
timer.start(1000)
self.ui()
self.show()
def ui(self):
global time2
time = QTime.currentTime()
text = time.toString('hh:mm')
if (time.second() % 2) == 0:
text = text[:2]+" "+ text[3:]
if text[3:] != time2:
if os.system("ping -c 1 192.168.63.145") == 0:
self.network = QLabel(self)
self.network.setPixmap(QPixmap("signal-bars.png"))
self.network.move(50,300)
self.network.show()
time2 = text[3:]
else:
self.network = QLabel(self)
self.network.setPixmap(QPixmap("no-internet.png"))
time2 = text[3:]
self.network.move(50,300)
self.network.show()
self.display(text)
def main():
app = QApplication(sys.argv)
clock = DigitalClock()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
QLCDNumber类-继承:QFrame QFrame类-继承:QWidget 无需每次创建-
self.network=QLabel(self)
您不需要全局
变量
试试看:
import sys
import os
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
#time2 = ""
class DigitalClock(QLCDNumber): #, QWidget):
def __init__(self, parent=None):
super(DigitalClock, self).__init__(parent)
self.time2 = True # +
self.network = QLabel(self) # +
self.network.setGeometry(50, 300, 150, 150) # +
self.setWindowTitle("Digital Clock")
self.showFullScreen()
self.mainlayout = QHBoxLayout() # ?
timer = QTimer(self)
timer.timeout.connect(self.ui)
self.ui()
timer.start(1000)
def ui(self):
# global time2 # ---
time = QTime.currentTime()
text = time.toString('hh:mm')
if (time.second() % 2) == 0:
text = text[:2]+" "+ text[3:]
# if text[3:] != time2:
# if os.system("ping -c 1 192.168.63.145") == 0:
if self.time2:
# self.network = QLabel(self) # ---
self.network.setPixmap(QPixmap("im.png").scaled(150, 150, Qt.KeepAspectRatio, Qt.FastTransformation))
# time2 = text[3:]
else:
# self.network = QLabel(self)
self.network.setPixmap(QPixmap("Ok.png").scaled(150, 150, Qt.KeepAspectRatio, Qt.FastTransformation))
# time2 = text[3:]
self.time2 = not self.time2
self.display(text)
def main():
app = QApplication(sys.argv)
clock = DigitalClock()
clock.show() # +
sys.exit(app.exec_())
if __name__ == '__main__':
main()
使用
super
没有问题,因为PyQt5具有良好的性能。在签名中包含parent=None
,这是标准做法,允许代码重复使用。使用QApplication(sys.argv)
也是一种标准做法,并支持。如果您有更复杂的需求,请使用@DennisJensen-我不熟悉pyqt5,请放弃tkinter。尽我最大的努力去适应。