我想在pyqt5中覆盖QSpinBox的stepBy方法,以便在更改值之前强制进行验证。 但是当我点击"增加"旋转盒的按钮,一切顺利,但"减少"按钮似乎不起作用......为什么只有这个呢?
以下是代码:
class custom_spinbox(PyQt5.QtWidgets.QSpinBox):
def __init__(self, *args, **kwargs):
super(custom_spinbox, self).__init__(*args, **kwargs)
def stepBy(self, step):
if step == 1:
print("up")
if step == -1:
print("down")
class ui_attr(QWidget):
def __init__(self, *args, **kwargs):
super(ui_attr, self).__init__()
#loading all the stuff
uic.loadUi("wdg_attr_2.ui", self)
test = custom_spinbox()
self.grid.addWidget(test, 1, 1)
def aff(self):
self.show()
增量按钮打印"向上"在控制台上,但减量按钮不显示任何内容。 我尝试了继承QAbstractSpinBox而不是QSpinBox,但根本没有在控制台上打印。
我错过了什么?
答案 0 :(得分:0)
您要覆盖stepBy
,这意味着您需要更改旋转框中显示的值。在您的代码中,值根本不会改变。
现在,默认情况下,spinbox的最小值为0.并且在零时,禁用“降低”按钮。因此,单击“降压”按钮不会产生任何输出。
只需在self.setMinimum( -100 )
之后添加super(custom_spinbox, ...
,您就会看到' down'将被打印。
对于QAbstractSpinBox
的子类化,您必须做很多工作才能使其表现得像QSpinBox
,这对于如此琐碎的努力是不值得的你想要的功能。