焦点控制
- 单个控件角度
- 父控件角度
- 单个控件角度
setFocus() # 设置指定控件获取焦点 setFocusPolicy(Policy) # 设置焦点获取策略 Policy参数: Qt.TabFocus # 只能通过Tab键获得焦点 Qt.ClickFocus # 只能通过单击获得焦点 Qt.StrongFocus # 可以通过上面两种方式获得焦点 Qt.NoFocus # 不能通过上面两种方式获得焦点(默认值),只能通过setFocus设置其获得焦点 clearFocus() # 取消指定控件焦点,取消后系统默认让第一个控件获取焦点
- 父控件角度
focusWidget() # 获取子控件中当前聚焦的控件对象 focusNextChild() # 聚焦下一个子控件 focusPreviousChild() # 聚焦上一个子控件 focusNextPrevChild(bool) # 通过True或False来设置下一个或上一个子控件获取焦点 setTabOrder(pre_widget, next_widget) # 静态方法,设置子控件获取焦点的先后顺序 参数: pre_widget: # 当前获取焦点控件名 next_widget: # 下一个获取焦点控件名
- 静态方法:可以直接通过 类名.方法名
QWidget.setTabOrder()
方式直接调用方法
- 静态方法:可以直接通过 类名.方法名
- 示例
- 单个控件角度示例代码
from PyQt5.Qt import * import sys app = QApplication(sys.argv) window = QWidget() window.resize(500, 500) window.setWindowTitle('焦点控制') btn = QPushButton(window) btn.setText('下一个') btn.move(100, 50) ledt1 = QLineEdit(window) ledt1.move(100, 100) ledt2 = QLineEdit(window) ledt2.move(100, 150) ledt3 = QLineEdit(window) ledt3.move(100, 200) ledt4 = QLineEdit(window) ledt4.move(100, 250) # 设置ledt1获取焦点 ledt1.setFocus() # 设置ledt2只能通过tab键获取焦点 ledt2.setFocusPolicy(Qt.TabFocus) # 设置ledt3只能通过单击获取焦点 ledt3.setFocusPolicy(Qt.ClickFocus) # 设置ledt4不能通过tab和单击获取焦点 ledt4.setFocusPolicy(Qt.NoFocus) # 取消ledt1获取焦点,系统默认让第一个控件重新获取焦点 ledt1.clearFocus() window.show() sys.exit(app.exec_())
- 父控件角度示例代码
from PyQt5.Qt import * import sys class Window(QWidget): def mousePressEvent(self, a0) -> None: # 设置下一个子控件获取焦点 # self.focusNextChild() # 设置上一个子控件获取焦点 # self.focusPreviousChild() # 设置下一个子控件获取焦点 # self.focusNextPrevChild(True) # 设置上一个子控件获取焦点 self.focusNextPrevChild(False) app = QApplication(sys.argv) window = Window() window.resize(500, 500) window.setWindowTitle('焦点控制') ledt1 = QLineEdit(window) ledt1.move(100, 100) ledt2 = QLineEdit(window) ledt2.move(100, 150) ledt3 = QLineEdit(window) ledt3.move(100, 200) ledt4 = QLineEdit(window) ledt4.move(100, 250) ledt1.setFocus() # 设置tab键光标切换顺序 QWidget.setTabOrder(ledt1, ledt4) QWidget.setTabOrder(ledt4, ledt2) QWidget.setTabOrder(ledt2, ledt3) window.show() sys.exit(app.exec_())