在PyQt 5中检索按钮的动态边距

时间:2018-08-08 20:30:54

标签: python python-3.x pyqt pyqt5 qtstylesheets

我有一个小部件,通常但并非总是一个按钮,我想为它的边缘和宽度设置动画效果以模拟滚动效果。但是,不同的小部件具有不同的边距,如Qt Designer中使用CSS设置的那样。我需要检索页边距,文档说我可以通过child.contentsMargins()完成。这是不正确的,因为:

  • widget.contentsMargins()返回0, 0, 0, 0。实际边距为20, 20, 0, 0
  • widget.style().subElementRect(QtWidgets.QStyle.SE_PushButtonFocusRect, QtWidgets.QStyleOptionButton())返回2, 3, -4, -6,似乎与任何地方都没有关系。
  • widget.style().subElementRect(QtWidgets.QStyle.SE_PushButtonFocusRect, QtWidgets.QStyleOptionButton(), widget)返回21, 21, -22, -22,似乎也与任何地方都没有关系。

我看到的唯一选择是解析样式表并动态更新它,每帧一次,但是我真的不想对动画的每一帧都进行字符串操作,因为亲爱的上帝,这是一种使事物动起来的可怕方法顺利。无法访问内置的这些值吗?

更新:简单复制:

from PyQt5 import QtWidgets
QtWidgets.QApplication([])
b = QtWidgets.QPushButton()
b.setStyleSheet("margin: 15px")
b.contentsMargins().top() #is 0, should be 15

0 个答案:

没有答案