Python PyQt5中的焦点原因?
我注意到,当调用Python PyQt5中的焦点原因?,python,python-3.x,pyqt,pyqt5,Python,Python 3.x,Pyqt,Pyqt5,我注意到,当调用qtwidts.setFocus时,我在PyCharm中得到一条警告,说它需要Qt.FocusReason而不是布尔值。事实上,该方法的文档还声明它需要一个Qt.FocusReason。但就我个人而言,我找不到任何关于PyQt5的信息 myPlainTextEdit.setFocus(True) 通过传入一个布尔值,该方法工作得非常好,但我想知道这可能是PyQt4的遗留问题,还是仅仅是一个异常?我注意到,在上,它似乎是针对PyQt4的,它说从QFocusEvent获取Focus
qtwidts.setFocus
时,我在PyCharm中得到一条警告,说它需要Qt.FocusReason
而不是布尔值。事实上,该方法的文档还声明它需要一个Qt.FocusReason
。但就我个人而言,我找不到任何关于PyQt5的信息
myPlainTextEdit.setFocus(True)
通过传入一个布尔值,该方法工作得非常好,但我想知道这可能是PyQt4的遗留问题,还是仅仅是一个异常?我注意到,在上,它似乎是针对PyQt4的,它说从QFocusEvent
获取FocusReason
。在尝试这样做时,我得到了另一个警告<代码>预期的类型“FocusReason”,改为“type”。这会引发一个类型错误,正如人们所预期的那样
myPlainTextEdit.setFocus(QtGui.QFocusEvent.ActionAdded)
似乎不包含用于
Qt.FocusReason
的页面。由于这是非常迂腐的,我并不过分担心是否有解决办法。我很想知道这是什么原因造成的。可以将Qt FocusReason传递给QtWidgets.setFocus
吗?每个小部件都支持两个名为setFocus()
的函数:
- 通过传入布尔值,该方法工作得非常好
setFocus(True)
等于setFocus(QtCore.Qt.TabFocusReason)
- 在尝试这样做时,我得到了另一个警告;预期类型为“FocusReason”,改为“type”。正如人们所料,这会引发一个类型错误
QtGui.QFocusEvent.ActionAdded
不属于该列表时,它会抛出错误。您必须使用上一列表中的值,方法是将:
更改为
,并在其前面加上QtCore
,因为它属于该子模块,例如:
myPlainTextEdit.setFocus(QtCore.Qt.MouseFocusReason)
加号:
如果您只想确定小部件具有焦点,则应调用第二个函数:
myPlainTextEdit.setFocus()
在python中,bool是
int
的一个子类,因此这里没有真正的神秘之处。从未出现过setFocus(bool)
过载。始终存在setFocus()
和clearFocus()
,然后在Qt4中添加了setFocus(Qt:FocusReason)
。
myPlainTextEdit.setFocus(QtCore.Qt.MouseFocusReason)
myPlainTextEdit.setFocus()