焦点控制

单个控件角度:

setFocus()     指定控件获取焦点

setFocusPolicy(Policy)    设置焦点获取方式

Qt.TabFocus    通过Tab键获得焦点,单击不能获得焦点

Qt.ClickFocus    通过被单击获得焦点,Tab键不能获得获得焦点

Qt.StrongFocus      上面两种方式都可以获得焦点

Qt.NoFocus       不能通过上两种方式获得焦点(默认值),setFocus仍可使其获得焦点

注意:setFocus()在任何方式下都可获得焦点

clearFocus()      取消焦点

from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton,QLineEdit,QMainWindow
import sys

from PyQt5.QtCore import Qt

class win(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(300,300)
        self.setWindowTitle('焦点控制')
        text1=QLineEdit(self)
        text1.move(80,10)
        text2 = QLineEdit(self)
        text2.move(80, 50)
        text3 = QLineEdit(self)
        text3.move(80, 90)

        #text2.setFocus()  #指定控件获取焦点
        #text2.setFocusPolicy(Qt.TabFocus)   #通过Tab键获得焦点,单击不能获得焦点
        #text2.setFocusPolicy(Qt.ClickFocus)  #通过被单击获得焦点,Tab键不能获得获得焦点
        text2.setFocusPolicy(Qt.StrongFocus)  #上面两种方式都可以获得焦点

        
if __name__=='__main__':
    app=QApplication(sys.argv)  #创建应用
    w=win()
    w.show()
    sys.exit(app.exec_())

父控件角度:

focusWidget()        获取子控件中当前聚焦的控件

一定要等到控件都显示出来,获取焦点后才可以

没有返回 None

focusNextChild()      聚焦下一个子控件

focusPreviousChild()      聚焦上一个子控件

focusNextPrevChild(bool)

True: #聚焦下一个子控件

False: 聚焦上一个子控件

setTabOrder(pre_widget, next_widget)     设置子控件获取焦点的先后顺序,静态方法

QWidget.setTabOrder(text1,text3) 
  #参数 text1后面是text3

from PyQt5.QtWidgets import QApplication, QWidget,QLineEdit,QPushButton
import sys

class win(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(300,300)
        self.setWindowTitle('焦点控制')
        text1=QLineEdit(self)
        text1.move(80,10)
        text2 = QLineEdit(self)
        text2.move(80, 50)
        text3 = QLineEdit(self)
        text3.move(80, 90)

        QWidget.setTabOrder(text1,text3)  #设置子控件获取焦点的先后顺序,静态方法
        #参数  text1后面是text3
        QWidget.setTabOrder(text3, text2)

    def mousePressEvent(self, event):  # 鼠标键按下时调用
        s=self.focusWidget()   #获取子控件中当前聚焦的控件
        self.focusNextChild()   #聚焦下一个子控件
        #self.focusPreviousChild()    #聚焦上一个子控件
        #self.focusNextPrevChild(False)   #聚焦上一个子控件



if __name__=='__main__':
    app=QApplication(sys.argv)  #创建应用
    w=win()
    w.show()
    sys.exit(app.exec_())
原文地址:https://www.cnblogs.com/liming19680104/p/10716564.html