实施计时器以使Q按钮闪烁

问题描述 投票:0回答:1

我试图让一些按钮从QtDesigner文件中闪烁,但是我无法使用计时器功能来更改按钮的背景。

我已经在这里得到了某人的帮助,他们的代码很好用,但是我似乎无法将代码集成到已有的代码中。

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(QtWidgets.QMainWindow):

   def setupUi(self, MainWindow):

    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(1309, 813)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.label = QtWidgets.QLabel(self.centralwidget)
    self.label.setGeometry(QtCore.QRect(50, 30, 251, 41))
    font = QtGui.QFont()
    font.setPointSize(36)
    self.label.setFont(font)
    self.label.setObjectName("label")
    self.voltage_percent = QtWidgets.QLCDNumber(self.centralwidget)
    self.voltage_percent.setGeometry(QtCore.QRect(80, 170, 141, 91))
    self.voltage_percent.setSmallDecimalPoint(True)
    self.voltage_percent.setDigitCount(1)
    self.voltage_percent.setProperty("intValue", 5)
    self.voltage_percent.setObjectName("voltage_percent")
    self.label_2 = QtWidgets.QLabel(self.centralwidget)
    self.label_2.setGeometry(QtCore.QRect(1070, 30, 111, 51))
    font = QtGui.QFont()
    font.setPointSize(36)
    self.label_2.setFont(font)
    self.label_2.setObjectName("label_2")
    self.modeTable = QtWidgets.QTableView(self.centralwidget)
    self.modeTable.setGeometry(QtCore.QRect(970, 90, 321, 411))
    self.modeTable.setObjectName("modeTable")
    self.label_12 = QtWidgets.QLabel(self.centralwidget)
    self.label_12.setGeometry(QtCore.QRect(170, 190, 51, 61))
    font = QtGui.QFont()
    font.setPointSize(48)
    self.label_12.setFont(font)
    self.label_12.setObjectName("label_12")
    self.label_13 = QtWidgets.QLabel(self.centralwidget)
    self.label_13.setGeometry(QtCore.QRect(580, 30, 91, 41))
    font = QtGui.QFont()
    font.setPointSize(36)
    self.label_13.setFont(font)
    self.label_13.setObjectName("label_13")
    self.flags_table = QtWidgets.QGraphicsView(self.centralwidget)
    self.flags_table.setGeometry(QtCore.QRect(370, 90, 541, 401))
    self.flags_table.setObjectName("flags_table")

   self.powerup_button = QtWidgets.QPushButton(self.centralwidget)
   self.powerup_button.setGeometry(QtCore.QRect(380, 110, 111, 81))
   self.powerup_button.setText("")
   self.powerup_button.setObjectName("powerup_button")

   self.flag = True


    timer = QtCore.QTimer(self, interval=1000)
    timer.timeout.connect(self.update)
    timer.start(1000)

    def update_color (self):



        if self.flag==True:

            self.powerup_button.setStyleSheet("background-color:none;")
        else:
            self.powerup_button.setStyleSheet("background-color: green;")  
        self.flag = False

为了简单起见,我只包括创建按钮的部分,还有很多,但是我发现相同的解决方案适用于所有按钮,因为它们是相同的。我使用的计时器是否错误? gui弹出,但是我要闪烁的按钮在运行程序时不会闪烁(开机按钮)

python pyqt pyqt5
1个回答
0
投票

尝试:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(QtWidgets.QMainWindow):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1309, 813)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(50, 30, 251, 41))
        font = QtGui.QFont()
        font.setPointSize(36)
        self.label.setFont(font)
        self.label.setObjectName("label")

        self.voltage_percent = QtWidgets.QLCDNumber(self.centralwidget)
        self.voltage_percent.setGeometry(QtCore.QRect(80, 170, 141, 91))
        self.voltage_percent.setSmallDecimalPoint(True)
        self.voltage_percent.setDigitCount(1)
        self.voltage_percent.setProperty("intValue", 5)
        self.voltage_percent.setObjectName("voltage_percent")

        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(1070, 30, 111, 51))
        font = QtGui.QFont()
        font.setPointSize(36)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")

        self.modeTable = QtWidgets.QTableView(self.centralwidget)
        self.modeTable.setGeometry(QtCore.QRect(970, 90, 321, 411))
        self.modeTable.setObjectName("modeTable")

        self.label_12 = QtWidgets.QLabel(self.centralwidget)
        self.label_12.setGeometry(QtCore.QRect(170, 190, 51, 61))
        font = QtGui.QFont()
        font.setPointSize(48)
        self.label_12.setFont(font)
        self.label_12.setObjectName("label_12")
        self.label_13 = QtWidgets.QLabel(self.centralwidget)
        self.label_13.setGeometry(QtCore.QRect(580, 30, 91, 41))
        font = QtGui.QFont()
        font.setPointSize(36)
        self.label_13.setFont(font)
        self.label_13.setObjectName("label_13")
        self.flags_table = QtWidgets.QGraphicsView(self.centralwidget)
        self.flags_table.setGeometry(QtCore.QRect(370, 90, 541, 401))
        self.flags_table.setObjectName("flags_table")

        self.powerup_button = QtWidgets.QPushButton(self.centralwidget)
        self.powerup_button.setGeometry(QtCore.QRect(380, 110, 111, 81))
        self.powerup_button.setText(" ")
        self.powerup_button.setObjectName("powerup_button")

        self.flag = True

        timer = QtCore.QTimer(MainWindow)                 # +++
        timer.timeout.connect(self.update_color)                    
        timer.start(1000)

        MainWindow.setCentralWidget(self.centralwidget)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)        


    def update_color (self):
        if self.flag:                                                     #==True:
            self.powerup_button.setStyleSheet("#powerup_button {background-color:none;}")
        else:
            self.powerup_button.setStyleSheet("#powerup_button {background-color: green;}") 

#        self.flag = False
        self.flag = not self.flag                                         # +



if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle('Windows')
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())    

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.