• 焦点控制


    单个控件角度:

    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_())
  • 相关阅读:
    分支与合并@基础
    创业者那些鲜为人知的事情
    centos7.5+nginx+php急速配置
    通过webhost扩展方式初始化EFCore数据库
    AspNetCore架构图
    Linux就该这样学--之常用linux命令及bash基础
    使用gitlab构建基于docker的持续集成(三)
    使用gitlab构建基于docker的持续集成(二)
    使用gitlab构建基于docker的持续集成(一)
    使用docker-compose配置mysql数据库并且初始化用户
  • 原文地址:https://www.cnblogs.com/liming19680104/p/10716564.html
Copyright © 2020-2023  润新知