PyQt6中Delete与Backspace键无法触发keyPressEvent问题求助
解决PyQt6中Delete/Backspace按键无法触发keyPressEvent的问题
问题核心是程序启动后主窗口未获得键盘焦点,导致按键事件无法传递到窗口的keyPressEvent方法;点击按钮后窗口获得焦点,按键才正常生效。
解决方案
在你的主窗口类中添加showEvent方法,确保窗口显示时主动获取焦点:
def showEvent(self, event): super().showEvent(event) self.setFocus()
或者在窗口初始化的最后一行添加:
self.setFocus()
前者更可靠,因为它会在窗口完全显示后再设置焦点,避免初始化阶段焦点被其他组件抢占。
原理说明
PyQt中只有拥有键盘焦点的组件才能接收键盘事件。程序启动时,焦点可能默认落在子控件(如按钮)或未被窗口获取,主动调用setFocus()可以让主窗口成为键盘事件的接收者,这样Delete、Backspace等按键就能触发keyPressEvent了。
内容的提问来源于stack exchange,提问作者Ankur Mallick
相关产品推荐
相关产品推荐

