Как отправить нажатое событие в QPushButton PyQT5? - PullRequest
0 голосов
/ 24 мая 2018

Мне нужна помощь с чем-то.Я использую PyQT, чтобы сделать игру на Python.Итак, я пытаюсь изменить фоновое изображение self.botaoVermelho на 1 секунду (в основном, кнопка «активируется» и через 1 секунду «деактивируется»), но я не знаю, каксделать это, потому что мне нужно сделать это БЕЗ нажатия на кнопку.

Это мой код:

class Interface(Mediado):
    def __init__(self, janela):
        self.janela = janela
        self.centralwidget = QtWidgets.QWidget(self.janela)
        self.botaoVermelho = QtWidgets.QPushButton(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(self.janela)
        self.statusbar = QtWidgets.QStatusBar(self.janela)

        self.configuraUi()

    def configuraUi(self):
        self.janela.setObjectName("Genius")
        self.janela.resize(451, 498)
        self.janela.setStyleSheet("background-color:#1d1d1d;")
        self.centralwidget.setObjectName("centralwidget")
        self.botaoVermelho.setGeometry(QtCore.QRect(230, 20, 200, 200))
        self.botaoVermelho.setStyleSheet("#botaoVermelho{\n"
                                         "background-color:transparent;\n"
                                         "border-image: url(\"src/images/bt_vermelho.png\");\n"
                                         "}\n"
                                         "\n"
                                         "#botaoVermelho:pressed{\n"
                                         "background-color:transparent;\n"
                                         "border-image: url(\"src/images/bt_vermelhoAct.png\");\n"
                                         "}")
        self.botaoVermelho.setObjectName("botaoVermelho")
        self.botaoVermelho.raise_()
        self.janela.setCentralWidget(self.centralwidget)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 451, 21))
        self.menubar.setObjectName("menubar")
        self.janela.setMenuBar(self.menubar)
        self.statusbar.setObjectName("statusbar")
        self.janela.setStatusBar(self.statusbar)
        _translate = QtCore.QCoreApplication.translate
        self.janela.setWindowTitle(_translate("Genius", "MainWindow"))
        QtCore.QMetaObject.connectSlotsByName(self.janela)

Я использую QtDesigner / QtCreator для создания дизайна интерфейса и используюкоманда терминала для преобразования .ui -> .py

Спасибо, если вы можете мне помочь.

1 Ответ

0 голосов
/ 24 мая 2018

Вы должны использовать setDown() и QTimer.

import sys

from PyQt5 import QtCore, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)
        lay = QtWidgets.QVBoxLayout(self)
        self.botaoVermelho = QtWidgets.QPushButton()
        self.botaoVermelho.setObjectName("botaoVermelho")
        self.botaoVermelho.setStyleSheet("#botaoVermelho{\n"
                                         "border-image: url(\"src/images/bt_vermelho.png\");\n"
                                         "}\n"
                                         "\n"
                                         "#botaoVermelho:pressed{\n"
                                         "border-image: url(\"src/images/bt_vermelhoAct.png\");\n"
                                         "}")
        lay.addWidget(self.botaoVermelho)
        self.emulate_clicked(self.botaoVermelho, 1000)

    def emulate_clicked(self, button, ms):
        button.setDown(True)
        QtCore.QTimer.singleShot(ms, lambda: button.setDown(False))

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...