gpt4 book ai didi

python - PyQt5 中的 FocusReason?

转载 作者:行者123 更新时间:2023-12-01 01:31:02 25 4
gpt4 key购买 nike

我注意到,在调用 QtWidgets.setFocus 时,我在 PyCharm 中收到一条警告,指出它需要 Qt.FocusReason 而不是 bool 值。事实上,该方法的文档还指出它需要一个Qt.FocusReason。但我怎么也找不到 PyQt5 的任何相关信息。

myPlainTextEdit.setFocus(True)

通过传递 bool 值,该方法工作得非常好,但我想知道这是否可能是 PyQt4 的一些遗留问题,或者只是一个异常现象?我注意到PyQt Sourceforge Documentation ,这似乎适用于 PyQt4,它说从 QFocusEvent 获取 FocusReason。在尝试这样做时,我收到另一个警告; 预期类型为“FocusReason”,却得到了“Type”。 正如人们所预料的那样,这会引发 TypeError。

myPlainTextEdit.setFocus(QtGui.QFocusEvent.ActionAdded)

PyQt5 documentation似乎不包含 Qt.FocusReason 的页面。由于这是非常迂腐的,所以我并不太担心是否没有解决方案。我有兴趣知道是什么原因造成的。是否可以首先将 Qt FocusReason 传递给 QtWidgets.setFocus

最佳答案

有 2 个函数名为 setFocus()每个小部件都支持:

你指的是第一个。那么让我们分析一下您指出的内容:

  • 通过传入 bool 值,该方法工作得非常好

它有效,但并不意味着它是正确的,首先 Qt::FocusReason 是一个枚举,也就是说所属的每个元素都与一个数字相关联:

Qt::MouseFocusReason          0   A mouse action occurred.
Qt::TabFocusReason 1 The Tab key was pressed.
Qt::BacktabFocusReason 2 A Backtab occurred. The input for this may include the Shift or Control keys; e.g. Shift+Tab.
Qt::ActiveWindowFocusReason 3 The window system made this window either active or inactive.
Qt::PopupFocusReason 4 The application opened/closed a pop-up that grabbed/released the keyboard focus.
Qt::ShortcutFocusReason 5 The user typed a labels buddy shortcut
Qt::MenuBarFocusReason 6 The menu bar took focus.
Qt::OtherFocusReason 7 Another reason, usually application-specific.

因此,当传递 bool 值时,它会将其转换为整数,False 转换为 0,True 转换为 1,因此 setFocus(True)等于 setFocus(QtCore.Qt.TabFocusReason) .

  • 在尝试执行此操作时,我收到另一个警告;预期类型为“FocusReason”,但得到的是“Type”。正如人们所料,这会引发 TypeError。

    myPlainTextEdit.setFocus(QtGui.QFocusEvent.ActionAdded)

如您所知QtGui.QFocusEvent.ActionAdded不属于该列表,因此会引发错误。您必须通过更改 :: 来使用上一个列表中的值。通过.并添加前缀 QtCore因为它属于该子模块,例如:

myPlainTextEdit.setFocus(QtCore.Qt.MouseFocusReason)

加号:

如果您只想确定小部件具有焦点,您应该调用第二个函数:

myPlainTextEdit.setFocus()

为了清洁使用 clearFocus() .

关于python - PyQt5 中的 FocusReason?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52862504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com