找回密码
 立即注册
Qt开源社区 门户 查看内容

python的GUI编程-PyQt5--4(输入控件1-纯键盘文本输入)

2019-10-12 16:10| 发布者: admin| 查看: 1309| 评论: 0

摘要: 注:这是本人在网络上听课后的总结笔记,仅供参考.--QLineEdit,QTextEdit,QPlainTextEdit,QKeySequenceEdit--纯键盘文本输入 一,QLineEdit 介绍:单行文本编辑器,可以输入或编辑单行纯文本 继承:QWidget 功能: ...
注:这是本人在网络上听课后的总结笔记,仅供参考.


--QLineEdit,QTextEdit,QPlainTextEdit,QKeySequenceEdit--

纯键盘文本输入



    一,QLineEdit
        介绍:单行文本编辑器,可以输入或编辑单行纯文本
      
        继承:QWidget
      
        功能:
            控件的创建:
                QLineEdit()#括号中可以填父控件名或字符串+父控件,字符串直接会在编辑器中显示
              
            文本的设置和获取:
                setText(str)#设置内容文本
                insert()#在光标出插入文本
                text()#获取真实内容文本
                displayText()#获取用户能看到的内容文本
              
            输出模式:
                setEchoMode(QlineEdit.EchoMode)#NoEcho=1不输出,Normal=0正常输出,Password=2密文输出,PasswordEchoOnEdit=3编辑时明文,结束后密文
              
                EchoMode()#获取输出模式状态
              
            占位提示字符串:
                setPlaceholderText()#设置提示文本
                placeholderText()#获取提示文本
              
            清空按钮显示:
                setClearButtonEnabled()#True为显示清空按钮或False不显示清空按钮
              
                issetClearButtonEnabled#获取
              
            添加操作行为:
                addAction(QAction,QLineEdit.ActionPosition)#ActionPosition的值有LeadingPosition前面,TrailingPosition后面
              
                addAction(QIcon,QLineEdit.ActionPosition)
              
            自动补全:
                setCompleter(QCompleter)#QCompleter是一个列表
              
                completer()
              
            输入限制:
                setMaxLength(int)#内容长度限制,设置输入的长度
              
                setReadOnly()#只读限制,True或False
              
                setValidator(Qvalidator)#规则验证,设置验证器.Qvalidator是验证器类别,用于验证用户输入数据的合法性,
              
                    Qvalidator类,是一个抽象类,需要子类化,例:
                  
                        class x(Qvalidator):
                            def validate(self,input_str,pos_int)#input_str输入的字符串,pos_int光标位置
                                return (Qvalidator.Acceptable,input_str,pos_int)#Qvalidator.Acceptable是通过验证,Qvalidator.Intermediate是暂时不做判定,Qvalidator.Inbalid是验证不通过
                          
                            def fixup(self,input_str)#当文本编辑器处于非正常验证通过时调用此方法,并修复数据
                                return input_str#返回的值就是修复的数据,可以自己定义
                          
                        le = QlineEdit()
                        y = x()
                        le.setValidator(y)
                      
                    Qvalidator提供的子类:
                        QintValidator()#限制整形数据范围,括号中填写2个整数,一个下线一个上线,但是这个类不会自动修复数据,可以自定义一个修复方法就可以,也就是fixup()
                      
                        QDoubleValidator()#浮点型数据限制范围
                      
                        QRegExpValidatoe()#通过正则表达式限定
                  
                  
                setInputMask(mask_str)#规则验证,掩码验证,掩码是指定固定位置的固定数据类型达到一个格式上的限制,例如固定电话号码:四位区号-七位电话,IP地址XXX.XXX.XXX.XXX,掩码由一串掩码字符和分隔符组成
              
                hasAcceptableInput()#判定输入文本是否通过验证
              
            是否被编辑:
              
                isModifide()#True代表已被编辑,False表示没被编辑过
              
                setModified()#设置文本框是否编辑状态
              
            光标控制:
          
                cursorBackward()#向左移动几个字符
                cursorForward()#向右移动几个字符
                cursorWordBackward()#向左移动一个单词长度
                cursorWordForward()#向右移动一个单词长度
                home()#移动到首行,
                end()#移动到行尾
                **以上几个方法的括号中都可填写True(带选中)或False(不带选中)
              
                setCursorPosition()#设置光标位置
                cursorPosition()#获取光标位置
                cursorPositionAt()#获取指定坐标位置对应文本光标的位置
          
            文本边距设置:
                getTextMarging()
                setTextMarging()#括号中填写位置,左,上,右,下
          
            对齐方式:
                setAlignment(Qt.Alignment)#水平位置:Qt.AlignLeft靠左,Qt.AlignRight靠右,Qt.AlignHCenter居中,Qt.AlignJustify自适应,同左对齐.垂直位置:Qt.AlignTop靠上,Qt.AlignBottom靠下,Qt.AlignVCenter居中,Qt.AlignBaseline靠基线,另外,Qt.AlignCenter等同于Qt.AlignHCenter|Qt.AlignVCenter垂直和水平都居中.设置中可以同时设置多个值,用|来链接,比如靠左靠下对齐就是Qt.AlignLeft|Qt.AlignBottom
              
            常用编辑功能:
                backspace()#退格
                del_()#删除
                clear()#清空
                copy()#复制
                cut()#剪切
                paste()粘贴
              
                isUndoAvailable()
                undo()#撤销
              
                isRedoAvailable()
                redo()#重做
              
                setDragEnabled()#是否可以拖放
              
            文本选中:
                setSelection()#选中指定区间的文本
                selectAll()#选中所有文本
                deselect()#取消选中已选文本
                hasSelectedText()#是否有选中文本
                selectedText()#获取选中的文本,str类型
                selectedStart()#选中的开始位置,int类型
                selectedEnd()#选中的结束位置,int类型
                selectedLength()#选中的长度,int类型
      
        信号:
            textEdited()#文本编辑时
            textChanged()#文本框文本发生改变时textEdited用于用户操作时,使用命令修改是不会触发的,而textChanged只要内容被修改就会发射信号
            ****以上2中信号基本相同,不同的地方只是在于
            returnPressed()#按下回车键时
            editingFinished()#结束编辑时
            cursorPositionChanged()光标位置发生改变时
            selectionChanged()#选中的文本发生改变时
              



    二,QTextEdit
        介绍:多行文本编辑器,并且支持富文本,也就是支持字体格式设置
      
        继承:QAbstractScrollArea-->QFrame-->QWidget
      
        QFrame:
            介绍:是一个基类可以选择直接使用,主要用来控制一些边框样式,例如凸起,凹下,阴影,线宽
            继承:QWidget
            功能:
                框架形状:
                setFrameShape(QFrame.Shape)#QFrame.shape包括:QFrame.NoFrame什么都没有,QFrame.box围绕内容绘制一个框也就是一个盒子,QFrame.Panel绘制一个面板也就是一个平面,是内容显得凸起或凹陷,QFrame.HLine绘制一条没有框架的水平线,用作分隔符,QFrame.HLine绘制一条没有边框的垂直线,QFrame.StyledPanel绘制一个面板,使其外观取决于当前的GUI样式,QFrame.WinPanel基本不用,建议使用StyledPanel
              
                框架阴影:
                setFrameShadow(QFrame.Shadow)#QFrame.Shadow包括:QFrame.Plain框架和内容与周围环境呈现水平,也就是没有任何3D效果,QFrame.Raised凸起效果,QFrame.Sunken凹陷效果
              
                框架线宽:
                setLineWidth()#设置外线宽度,lineWidth()是获取外线宽度
                setMidLineWidth()#设置中线宽度,midLineWidth()是获取中线宽度
                frameWidth()#获取总宽度
              
        QAbstractScrollArea:
            介绍:是一个滚动区域的抽象类
            继承:QFrame
            功能:
                设置水平和垂直滚动条:#暂时不用,以后有更好的代替QScrollBar
              
                滚动条策略:
                setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy)#水平显示策略
                setVerticalScrollBarPolicy(Qt.ScrollBarPolicy)#垂直显示策略
                horizontalScrollBarPolicy()
                verticalScrollBarPolicy()
              
                ***
                Qt.ScrollBarPolicy包括:
                Qt.ScrollBarAsNeeded#当内容太多时自动显示滚动条,也是默认值
                Qt.ScrollBarAlwaysoff#从不显示
                Qt.ScrollBarAlwayson#始终显示
              
              
                角落控件:
                setCornerWidget()#括号中可以放一个控件,比如一个按钮
              
        功能:
            占位提示文本:
                setPlaceholderText(str)#在文本框内容为空时提示内容
          
            内容设置:
                setPlainText(str)#设置普通文本
                insertPlainText(str)#插入普通文本
                toPlainText#获取普通文本内容
                setHtml()#html文本,也就是富文本
                insertHtml(str)#插入html文本
                toHtml#获取html文本
                setText(str)#设置文本,自动判定为普通文本或html文本
                append(str)#追加文本,在所有内容最后追加,格式也是自动判定
                clear()#清空
              
                **文本光标:首先获取文本光标对象:
                y = QTextEdit()
                x = y.textCursor()
                    添加内容:
                  
                        x.insertText()#插入文本,可以带一个格式参数,
                        x.inserHtml()#插入html文本
                      
                        x.insertmage(QTextImageFormat)#插入图片,QTextImageFormat包含:tf.setName()名字路径,tf.setWidth()宽,tf.setHeight()高
                      
                        x.insertFrament(QTextDocumentFragment)#插入文本片段,QTextDocumentFragment包括:fromHrml(),fromPlainText()
                      
                        *插入列表
                        x.insertList(QTextListFormat)#在当前位置插入一个新块,并使其成为具有给定格式的新创建列表的第一个列表项,返回创建的列表
                        x.insertList(QTextListFormat.style)#在当前位置插入一个新块,并使其成为具有给定格式的新创建列表的第一个列表项,返回创建的列表
                        x.creatList(QTextListFormat)#创建并返回具有给定格式的新列表,并使当前段落的光标位于第一个列表项中
                        x.creatList(QTextListFormat.style)#创建并返回具有给定格式的新列表,并使当前段落的光标位于第一个列表项中
                      
                        ***
                        QTextListFormat包括:
                            setIndent(int)
                            setNumberPrefix(str)
                            setNumberSuffix(str)
                            setStyle(QTextListFormat_Style)
                        QTextListFormat.style包括:
                            QTextListFormat.ListDisc#一个圆圈
                            QTextListFormat.ListCircle#一个空的圆圈
                            QTextListFormat.ListSquare#一个方块
                            QTextListFormat.ListDecimal#十进制按升序排列
                            QTextListFormat.ListLowerAlpha#小写拉丁字符按字母排列
                            QTextListFormat.ListUpperAlpha#大写拉丁字符按字母排列
                            QTextListFormat.ListLowerRoman#小写罗马数字
                            QTextListFormat.ListUpperRoman#大写罗马数字
                          
                        x.insertTable()#插入表格,括号中有两个参数,一个是行数,一个是列数,另外还可以额外多一个参数,QTextTableFormat()表格样式,QTextTableFormat里包含:setAlignment()对齐方式,setCellPadding()内边距,setCellSpacing()外边距,setColumnWidthConstraints()列宽
                      
                        x.insertBlock()#插入一个空的文本块,也就是一个段落可以带一个QTextBlockFormat文本块格式,还可以带一个QTextCharFormat文本字符格式
                        x.insertFrame()#插入框架,可以带一个QTextFrameFormat
                      
                    设置和合并格式:
                        x.setBlockCharFormat(QTextCharFormat)#设置要格式化的当前块的块char格式
                        x.setBlockFormat(QTextBlockFormat)#设置当前块格式
                        x.setCharFormat(QTextCharFormat)#将光标的当前字符格式设置为指定格式
                        **以上3种会清空原有格式后在进行设置
                        x.mergeBlockCharFormat(QTextCharFormat)
                        x.mergeBlockFormat(QTextBlockFormat)
                        x.mergeCharFormat(QTextCharFormat)
                        **后3种为合并格式,在原有格式上进行合并
                      
                    获取内容相关:
                        x.block()#获取光标所在的文本块,其中.text()可以获取当前段落的内容
                        x.blockFormat()#获取光标所在的文本块格式
                        x.blockCharFormat()#获取光标所在的文本块字符格式
                        x.blockNumber()#获取光标所在的文本块编号
                        x.charFrame()#获取文本字符格式
                        x.currentFrame()#获取当前所在的框架
                        x.currentList()#获取当前所在的文本列表
                        x.currentTable()#获取当前的表格
                      
                    文本选中和清空:
                        x.setPosition()#设置光标位置,需要反向设置回去线y.setTextCursor(x),2个参数,一个是光标位置,一个是移动模式QTextCursor.MoveMode
                        x.movePosition()#移动指定长度后,有3个参数,一个是移动的选项操作QTextCursor.MoveOperation,第二个是移动模式QTextCursor.MoveMode,第三个是int没有太大意义,也需要反向设置y.setTextCursor(x)
                        x.select()#需要反向设置y.setTextCursor(x),需要一个参数QTextCursor.SelectionType
                      
                            **
                            QTextCursor.MoveMode#包括:QTextCursor.MoveAnchor锚点与光标位置相同;QTextCursor.KeepAnchor锚点固定在原处
                            QTextCursor.MoveOperation
                            '''包括:
                            QTextCursor.NoMove光标保持在原位;
                            QTextCursor.Start移至文档开头;
                            QTextCursor.StartOfLine移动到当前行开头;
                            QTextCursor.StartOfBlock移动到当前块开头;
                            QTextCursor.StartOfWord移动到当前单词开头;
                            QTextCursor.PreviousBlock移动到上一个块开头;
                            QTextCursor.PreviousCharacter移动到上一个字符;
                            QTextCursor.PreviousWord移动到上一个单词开头;
                            QTextCursor.Up向上移动一行;
                            QTextCursor.Left向左移动一个字符;
                            QTextCursor.WordLeft向左移动一个单词;
                            QTextCursor.End移动到文档末尾;
                            QTextCursor.EndOfLine移动到挡墙末尾;
                            QTextCursor.EndOfWord移动到当前单词末尾;
                            QTextCursor.EndOfBlock移动到当前块末尾;
                            QTextCursor.NextBlock移动到下一个块开头;
                            QTextCursor.NextCharacter移动到下一个字符;
                            QTextCursor.NextWord移动到下一个单词;
                            QTextCursor.Down向下移动一行;
                            QTextCursor.Right向右移动一个字符;
                            QTextCursor.WordRight向右移动一个单词;
                            QTextCursor.NextCell移动到当前表中下一个单元格的开头;
                            QTextCursor.PreviousCell移动到当前表中上一个单元格开头;
                            QTextCursor.NextRow移动到当前表中下一行的第一个单元格;
                            QTextCursor.PreviousRow移动到当前表中上一行的最后一个单元格;
                            '''
                            QTextCursor.SelectionType#包括:QTextCursor.Document选则整个文档;QTextCursor.BlockUnderCursor选则光标下的文本块;QTextCursor.LineUnderCursor选中光标下的文本行;QTextCursor.WordUnderCursor选中光标下的单词
                      
                        x.selectedText()#获取选中的文本,str类型
                        x.selection()#获取选中的文本,QTextDocumentFragment类型
                        x.selectTableCells()#获取表格单元格,4个返回值分别是:起始行数,一共的行数,起始列,一共的列数
                        x.selectStart()#选中文本的开始位置
                        x.selectEnd()#选中文本的结束位置
                        x.clearSelection()#取消选中,需要反向设置
                        X.hasSelection()#是否有选中文本
                        x.removeSelectedText()#移除选中的文本
                      
                    删除内容:
                        x.deleteChar()#如果没有选中文本,删除光标后一个字符,如果有选中文本,删除选中文本
                        x.deletePreviousChar()##如果没有选中文本,删除光标前一个字符,如果有选中文本,删除选中文本
                      
                    位置相关:
                        x.atBlockEnd()#是否在文本块末尾
                        x.atBlockStart()#是否在文本块开始
                        x.atEnd()#是否在文档末尾
                        x.atStart()#是否在文档开始
                        x.columnNumber()#在第几行
                        x.position()#光标位置
                        x.positionInBlock()#在文本块中的位置
                      
                    开始和结束编辑标识
                        x.beginEditBlock()
                        x.endEditBlock()
                        '''
                        在begin和end之间的操作作为一个整体操作,方便统一撤销和重做
                        '''
          
            自动格式化:
                setAutoFormatting(QTextEdit.AutoFormatting)#QTextEdit.AutoFormatting包含:QTextEdit.AutoNone不做任何自动格式化;QTextEdit.AutoBulletList自动创建项目符号列表;QTextEdit.AutoAll应用所有自动格式
          
            软换行模式:
                当内容太多时是否进行软换行以及如何进行软换行
                setLineWrapMode(QTextEdit.LineWrapMode)#设置软换行模式,QTextEdit.LineWrapMode包括:QTextEdit.NoWrap没有软换行,超过宽度后水平滚动;QTextEdit.WidgetWidth以控件的宽度为限,但是会保持单词的完整性;QTextEdit.FixedPixelWidth填充像素宽度;QTextEdit.FixedColumnWidth填充列的宽度
                setWordWrapMode(QTextOption.WrapMode)#设置单词换行模式,QTextOption.WrapMode包括:QTextOption.NoWrap没有软换行;QTextOption.WordWrap保持单词完整性;QTextOption.WrapAnywhere随意在任何位置换行,只要宽度够了
          
            覆盖模式:
                setOverwriteMode(bool)#设置是否为覆盖,Ture为覆盖,False为插入模式,也就是不覆盖
          
            光标设置:
                setCursorWidth(int)#设置光标宽度
          
            对齐方式:
                setAlignment(Qt.Alignment)#常用的对齐方式有Qt.AlignLeft;Qt.AlignRight;Qt.AlignCenter,并且只用于当前段落
          
            字体格式:
                字体家族
                    setFontFamily(family_str)#可以使用QFontDialog.getFont()来查看可用字体
                字体样式
                    setFontWeight()#字体粗细
                    setFontItalic(bool)#是否斜体
                字体尺寸
                    setFontPointSize()#字体尺寸
                字体效果
                    setFontUnderlinr(bool)#是否有下划线
                统一设置QFont
                    setCurrentFont(QFont)
          
            颜色设置:
                setTextBackgroundColor(QColor)#将当前格式的文本背景颜色设置为指定颜色
                setTextColor(QColor)#将单签格式的文本颜色设置成指定颜色
          
            当前的字符格式:
                setCurrentCharFormat()#设置格式
                mergeCurrentCharFormat()#合并设置
          
            常用编辑操作:
                copy()#复制
                paste()#粘贴
                canPaste()#判断是否可以粘贴
                setUndoRedoEnabled(bool)#设置是否可以撤销和重做
                redo()#重做
                undo()#撤销
                selectAll()#全选
                find()#查找,查找内容后可以加一个参数,包括:QTextDocument.FindBackward向上查找;QTextDocument.FindCaseSensitively区分大小写;QTextDocument.FindWholeWords查找完整单词
          
            滚动:
                scrollToAnchor()#滚动到指定锚点位置,括号里需要填锚点名称
          
            只读设置:
                setReadOnly(bool)#设置为只读
         
            tab控制:
                setTabChangesFocus(bool)#控制TAB键的功能,是否改变焦点,默认是False
                setTabStopDistance()#制表位的距离,默认80像素
                setTabStopWidth()#同上
            锚点获取:
                anchorAt(QPoint)#返回位置pos出的锚点的引用,如果不存在锚点则返回空字符串
                QDesktopServices.openUrl(QUrl())#打开超链接,在QUrl()的括号中放入超链接地址
      
        信号:
            testChanged()#文本内容发生改变时
            selectionChanged()#选中内容发生改变时
            cursorPositionChanged()#光标位置发生改变时
            currentCharFormatChanged()#当前字符格式发生改变时
            copyAvailable()#复制可用时
            redoAvailable()#重做可用时
            undoAvailable()#撤销可用时
          



   三, QPlainTextEdit
        介绍:
            普通文本编辑器,和QTextEdit大致功能差不多,但针对纯文本处理进行了优化,不支持表格框架,并使用逐行逐段的滚动方法来代替像素精准高度计算
      
        继承:
            QAbstractScrollArea
          
        功能:
            大致和QTextEdit一样:
            占位提示文本:同QTextEdit
            只读设置:同QTextEdit
            字体格式:同QTextEdit
            覆盖模式:同QTextEdit
            tab控制:同QTextEdit
          
            软换行模式:
                setLineWrapMode(QPlainTextEdit.LineWrapMode)#QPlainTextEdit.LineWrapMode包括:QPlainTextEdit.NoWrap没有软换行;QPlainTextEdit.WidgetWidth超出控件宽度自动换行
          
            文本操作:
                setPlainText(str)#设置普通文本内容
                insertPlainText(str)#插入普通文本
                appendPlainText(str)#追加普通文本
                appendHtml(str)#追加普通HTML字符串,表格,列表,图片等不支持
                toPlainText#获取普通文本内容
          
            块操作:
                blockCount()#当前块个数,也就是段落数
                maximumBlockCount()#最大块个数
                setMaximumBlockCount()#设置最大块个数,输入的内容超出最大块个数时,最上面的内容将被删除
          
            常用编辑操作:
                zoomIn(int)#放大或缩小,正数为放大,负数为缩小,此方法也适用于QTextEdit
          
            滚动:
                centerCursor()#控制光标,尽可能保证光标在文本框中间
                ensureCursorVisible()#保证光标可见
          
            光标:
                textCursor()#获取文本光标对象
                cursorForPosition()#获取指定位置的光标对象
                setCursorWidth()#设置文本光标宽度
                cursorRect()#获取文本光标矩形
                moveCursor()#移动光标和锚点
          
        信号:
            testChanged()#文本内容发生改变时
            selectionChanged()#选中内容发生改变时
            cursorPositionChanged()#光标位置发生改变时
            copyAvailable()#复制可用时
            redoAvailable()#重做可用时
            undoAvailable()#撤销可用时
            ***以上信号同QTextEdit
          
            modificationChanged()#修改状态发生改变时
            blockCountChanged()#块的个数发生改变时
          
            updateRequest()#内容更新请求时,有2个参数,一个是更新区域,一个是Y轴位移
          



    四,QKeySequenceEdit
        介绍:
            控件允许输入QKeySequence,通常用作快捷键,当控件收到焦点时开始录制,并在用户释放最后一个关键字后一秒钟结束录制
      
        继承:
            QWidget
          
        功能:
            setKeySequence(QKeySequence)#快捷键的设置
            clear()#清空
      
        信号:
            editingFinished()#结束编辑时
            keySequenceChanged()#建伟序列改变时


----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:BB贩卖团,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了