如何使QRadioButton可单击区域成为整个按钮,而不仅仅是文本上的按钮

2024-04-23 21:56:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 文本区域按钮矩形pyside2mayaqpushbuttonqradiobutton
1条回答
网友
1楼 · 发布于 2024-04-23 21:56:23

从QAbstractButton继承的每个按钮(如QPushButton和QRadioButton)都必须实现^{}方法,该方法指示位置是否改变按钮的状态。因此,在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_())

相关问题 更多 >