实现定时器闪烁Q按钮

2024-10-03 11:24:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让一些按钮闪烁从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弹出,但是当我运行程序时,我想闪烁的按钮不会闪烁(powerup按钮)


Tags: selfbutton按钮labelfontpercentvoltageqtcore
1条回答
网友
1楼 · 发布于 2024-10-03 11:24:51

试试看:

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

相关问题 更多 >