python - 重写 QSpinBox.stepby 方法使 spinbox 仅增量

标签 python qt pyqt5

我想重写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,但控制台上根本没有打印任何内容。

我错过了什么?

最佳答案

您正在覆盖 stepBy,这意味着您可以更改旋转框中显示的值。在您的代码中,该值根本不会改变。

现在,默认情况下,旋转框的最小值为 0。为零时,向下按钮被禁用。因此,您单击降压按钮不会产生任何输出。

只需在 super(custom_spinbox, ... 之后添加 self.setMinimum( -100 ) 即可,您会看到将打印“down”。

至于 QAbstractSpinBox 的子类化,你必须做很多工作才能让它表现得像 QSpinBox ,不值得为这么琐碎的事情付出努力您想要的功能。

关于python - 重写 QSpinBox.stepby 方法使 spinbox 仅增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38296986/

相关文章:

python - 在 python 中显示像素数组中的图像时出错

python - python中raise后是否可以执行一条语句?

c++ - 为什么没有 qRegisterMetaType q_enum 无法获得正确的类型值?

linux - Mac 的菜单栏子类无法像在 Linux 和 Windows 中那样工作

python - 如何使用opencv将图像显示到PYQT

python - PyQt:QGraphicsView 中的鼠标事件

python - 从脚本调用 Ghostscript 会产生错误

python - 递归函数的危险

c++ - QString 等同于 .at() C++ QT

python - 如何将列中的所有项目对齐到 QTableWidget 的中心