python - 如何使用pyqt5在运行时用另一个图像替换原始图像?

标签 python pyqt pyqt5

我正在尝试制作可以通过图形表示显示天气网关闭或打开的应用程序。对于我使用 pyqt5 的任务,但是当我尝试执行此操作时,它只是一次又一次地重叠在同一张图像上。

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()

enter image description here

关于python - 如何使用pyqt5在运行时用另一个图像替换原始图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58395794/

相关文章:

python - 如何通过pyqt5按钮启动多个函数实例?

python - 使用 PyQt 和 matplotlib 在可滚动小部件中显示多个图

python - 如何获取 QTreeWidget 中被单击的项目?

python - 在使用 QSortFilterProxyModel 的 QTreeView 中插入行

python - rpy2:有多少个 R 实例正在运行?

python - 在数据框中查找重复的组

python - 在 Python 中,每个对象可以调用 `__del__` 多少次?

python - 如何在 Python 中使用 bzip2 压缩文件?

python - 使用 QlistWidget 进行主动搜索

python - pyqt在Qgraphicsscene中添加矩形