【发布时间】:2018-10-17 19:44:15
【问题描述】:
我注意到在调用 QtWidgets.setFocus 时,我在 PyCharm 中收到一条警告,说它需要 Qt.FocusReason 而不是布尔值。实际上,此方法的文档还指出它需要Qt.FocusReason。但是对于我的一生,我找不到任何有关 PyQt5 的信息。
myPlainTextEdit.setFocus(True)
通过传入一个布尔值,该方法工作得非常好,但我想知道这是否可能是 PyQt4 的一些遗留问题,或者只是一个异常情况?我注意到PyQt Sourceforge Documentation 上似乎是针对 PyQt4 的,上面写着要从QFocusEvent 获取FocusReason。在尝试这样做时,我收到了另一个警告; Expected type 'FocusReason', got 'Type' instead. 正如人们所料,这会引发 TypeError。
myPlainTextEdit.setFocus(QtGui.QFocusEvent.ActionAdded)
PyQt5 documentation 似乎不包含Qt.FocusReason 的页面。由于这是非常迂腐的,如果没有解决方案,我不会过分担心。我很想知道是什么原因造成的。是否可以首先将 Qt FocusReason 传递给QtWidgets.setFocus?
【问题讨论】:
-
在 python 中
bool是int的子类,所以这里没有真正的神秘之处。从来没有出现过setFocus(bool)过载。一直有setFocus()和clearFocus(),然后在Qt4中添加了setFocus(Qt:FocusReason)。
标签: python python-3.x pyqt pyqt5