Я пишу на Python 3.5, используя PyQt5 GUI.Прототипом моего проекта является приложение, которое создает матрицу текстов и меняет цвет каждой «ячейки», одну за другой.Теперь это происходит при нажатии кнопки, которая связана с функцией.
Мне нужно вызвать функцию, которая изменяет конфигурацию BrowserText без какого-либо взаимодействия пользователя с приложением.Другими словами, палитры должны сами менять цвет в конкретных временных интервалах.
Итак, есть ли какой-либо метод в виджете QPushButton (или любой унаследованный), который, например, вызывает функцию после того, как не щелкнул ее длякакой-то период времени?Если нет, могу ли я как-нибудь вызвать функцию автоматически?
Код класса дизайна выглядит следующим образом:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def __init__(self):
self.width = int(20)
self.height = int(16)
self.i = 0
self.j = 0
def setColor(self):
if (self.i < self.height) and (self.j < self.width):
self.texts[self.i][self.j].setStyleSheet("QTextBrowser {background-color:white}")
if self.j == self.width - 1:
self.j = -1
self.i += 1
self.j += 1
self.texts[self.i][self.j].setStyleSheet("QTextBrowser {background-color:red}")
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(40 * int(self.width), 40 * int(self.height) + 10)
Dialog.setStyleSheet("QPushButton{\n"
" width = 0px;\n"
"}")
self.gridLayoutWidget = QtWidgets.QWidget(Dialog)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 40 * self.width, 40 * self.height))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.texts = [[QtWidgets.QTextBrowser(self.gridLayoutWidget) for j in range(self.width)] for i in
range(self.height)]
for i in range(self.height):
for j in range(self.width):
self.texts[i][j] = QtWidgets.QTextBrowser(self.gridLayoutWidget)
self.texts[i][j].setObjectName("text" + str(i) + str(j))
self.gridLayout.addWidget(self.texts[i][j], i, j)
self.pushButton = QtWidgets.QPushButton(self.gridLayoutWidget)
self.gridLayout.addWidget(self.pushButton, self.height, 1, 1, self.width - 2)
self.pushButton.setObjectName("pushButton")
self.pushButton.clicked.connect(lambda: self.setColor())
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))