【问题标题】:How to make QRadioButton clickable area the whole button instead of just on the text如何使 QRadioButton 可点击区域成为整个按钮,而不仅仅是文本
【发布时间】:2020-10-02 19:40:56
【问题描述】:

如果重要的话,我在 Maya 2018 中使用 PySide2。 QRadioButton 仅在单击文本区域时才会响应,即使按钮的矩形更大。可以单击 QPushButton 矩形中的任何位置,它会响应。我可以让 QRadioButton 在这方面像 QPushButton 一样工作吗?

【问题讨论】:

标签: python pyside2 qradiobutton


【解决方案1】:

从 QAbstractButton 继承的每个按钮,如 QPushButton 和 QRadioButton 都必须实现 hitButton() 方法,该方法指示位置是否更改按钮的状态。因此,在 QPushButton 的情况下,它将所有几何图形作为参考,而 QRadioButton 将文本 + 半径作为参考。解决方案是覆盖该方法,使其具有所需的行为:

import os
import sys

from PySide2 import QtCore, QtWidgets


class CustomRadioButton(QtWidgets.QRadioButton):
    def hitButton(self, pos):
        return self.rect().contains(pos)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)

    w = QtWidgets.QWidget()
    lay = QtWidgets.QVBoxLayout(w)
    for i in range(4):
        btn = QtWidgets.QRadioButton(f"QRadioButton-{i}")
        lay.addWidget(btn)
    for j in range(4):
        btn = CustomRadioButton(f"CustomRadioButton-{i}")
        lay.addWidget(btn)

    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())

【讨论】:

    猜你喜欢
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多