如何在 PyQt5 Python 中单击按钮时将焦点设置到旧 window?
How to set focus to the old window on button click in PyQt5 Python?
我当前的项目是使用我的个人功能创建一个屏幕键盘供我个人使用。我用 Python 在 PyQt5 中制作了 gui 和主要功能。我设法使用 pyautogui.write()
方法在单击按钮时键入字母。但问题是,我想打字的地方没有焦点。假设我想在 chrome 的地址栏或我显示器上的任何其他输入字段上书写。当我单击按钮键入字母时,chrome 失去了焦点。我想在按下任何按钮时将焦点设置到旧的 window。我在 google 上对此进行了搜索,但没有找到任何答案。我怎样才能将焦点设置到旧 window?或者有没有更好的方法来输入焦点丢失状态?
您不应该尝试“将焦点放回原处”,因为几乎不可能知道 window 之前有什么焦点(同时可能会引发新的 window) .你实际上应该做的是 防止 你的 window 获得焦点,从而避免它从其他人那里窃取焦点。
为了实现这一点,您必须设置适当的 window flag(或使用 flags
关键字参数用它初始化小部件),这是 Qt.WindowDoesNotAcceptFocus
.
请注意,您可能还想设置 Qt.WindowStaysOnTopHint
以便始终使您的 window 高于其他人:
class MyKeyboard(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowFlags(
QtCore.Qt.WindowDoesNotAcceptFocus
| QtCore.Qt.WindowStaysOnTopHint
)
我当前的项目是使用我的个人功能创建一个屏幕键盘供我个人使用。我用 Python 在 PyQt5 中制作了 gui 和主要功能。我设法使用 pyautogui.write()
方法在单击按钮时键入字母。但问题是,我想打字的地方没有焦点。假设我想在 chrome 的地址栏或我显示器上的任何其他输入字段上书写。当我单击按钮键入字母时,chrome 失去了焦点。我想在按下任何按钮时将焦点设置到旧的 window。我在 google 上对此进行了搜索,但没有找到任何答案。我怎样才能将焦点设置到旧 window?或者有没有更好的方法来输入焦点丢失状态?
您不应该尝试“将焦点放回原处”,因为几乎不可能知道 window 之前有什么焦点(同时可能会引发新的 window) .你实际上应该做的是 防止 你的 window 获得焦点,从而避免它从其他人那里窃取焦点。
为了实现这一点,您必须设置适当的 window flag(或使用 flags
关键字参数用它初始化小部件),这是 Qt.WindowDoesNotAcceptFocus
.
请注意,您可能还想设置 Qt.WindowStaysOnTopHint
以便始终使您的 window 高于其他人:
class MyKeyboard(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowFlags(
QtCore.Qt.WindowDoesNotAcceptFocus
| QtCore.Qt.WindowStaysOnTopHint
)