DateTimeEdit, TimeEdit stepBy
Я искал решения, но не нашел их. Я хотел превратить его в QTimeEdit, нажимая стрелку вверх или вниз на минутах, и только те, шаг 10. Я хотел написать в таблице стилей. Я пробовал эти решения, но они не работают.
QTimeEdit::MinuteSection{
stepBy:10;
}
QTimeEdit QAbstractSpinBox{
stepEnabled: True;
}
QTimeEdit QAbstractSpinBox::MinuteSection {
stepEnabled: True;
stepBy:10;
}
Во всех случаях, указанных выше, минуты всегда увеличиваются на единицу, а не на 10. Однако код не дает мне ошибок. из PyQt5 импорт QtCore, QtGui, QtWidgets
class timeEdit(QtWidgets.QTimeEdit):
def stepBy(self, steps):
if self.currentSection() == self.MinuteSection:
steps=10
class MainWindow(QtWidgets.QWidget):
def __init__(self):#FFFFFF
super(MainWindow, self).__init__()
self.resize(800, 480)
self.setWindowTitle("MainWindow")
self.setObjectName("MainWindow")
self.timeEdit = QtWidgets.QTimeEdit(self)
self.timeEdit.setGeometry(QtCore.QRect(330, 30, 200, 100))
self.timeEdit.stepBy(1)
self.timeEdit2 = QtWidgets.QTimeEdit(self)
self.timeEdit2.setGeometry(QtCore.QRect(330, 230, 200, 100))
if __name__ == "__main__":
import sys
app =QtWidgets.QApplication(sys.argv)
Window= MainWindow()
Window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
1 ответ
Таблицы стилей Qt служат только для визуальной части, они не обрабатывают логику, потому что она терпит неудачу. Решение состоит в том, чтобы перезаписать stepBy()
метод QTimeEdit
:
from PyQt5 import QtWidgets
class TimeEdit(QtWidgets.QTimeEdit):
def stepBy(self, steps):
if self.currentSection() == QtWidgets.QDateTimeEdit.MinuteSection:
steps = 10
super(TimeEdit, self).stepBy(steps)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = TimeEdit()
w.show()
sys.exit(app.exec_())