创建标准QPushButton时,如果窗口中没有其他窗口小部件,则会给予完全关注。但是,即使有其他小部件,一旦点击该按钮保持专注。这是一张显示行为的图片:
如果我单击按钮并将鼠标移出按钮,它也会有此焦点。然而,绑定到按钮的方法不会执行,这是预期的行为。重点不是。它应该只在点击时像这样聚焦,并且一旦它不再被按下就应该恢复到它的正常状态。见这里:
我尝试了各种方法来尝试解决此问题,例如setFocus(False)
方法,setAutoFocus()
方法以及setFocusPolicy(QtCore.Qt.NoFocus)
方法。这只取得了一些成功。是的,按钮现在没有聚焦,但它从未获得焦点;因此" NoFocus"。如果我有" NoFocus"这就是点击按钮时的样子。参数集:
基本上,我只希望按钮在点击时具有焦点,我希望它在点击后失去焦点。从本质上讲,回到第二个屏幕截图中的样子。
我使用Antergos Arch Linux和KDE Plasma,所以我希望这不是某种Qt库问题。对于PyQt5或其他方式,我无法在线找到任何相关信息。
感谢。
编辑:这是按钮的代码:
self.play_pause_button = QtWidgets.QPushButton()
self.play_pause_button.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_MediaPlay))
编辑2:这是一整段示例代码
#!/usr/bin/python3.6
import sys
from PyQt5 import QtWidgets
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.resize(640, 480)
button = QtWidgets.QPushButton()
button.setText('Push me!')
layout = QtWidgets.QHBoxLayout()
layout.addWidget(button)
window.setLayout(layoutB)
window.show()
sys.exit(app.exec_())
以下是我的系统上的示例: