【Python】pyqt5-----QLineEdit、QFrame、QAbstractSlider、QTextEdit

QLineEdit继承自QWidget

 

QLineEdit创建

QLineEdit(parent)QLineEdit创建1。
QLineEdit(str, parent)QLineEdit创建2。

文本相关设置

setText(str)设置内容文本。
insert(newText)在光标处插入文本。
text()获取真实内容文本。
displayText()获取用户能看到的内容文本。

输出模式设置

setEchoMode(int)1:不输出;0:正常输出;2:密文形式;3:编辑时明文, 结束后密文。
echoMode()获取输出模式。

占位提示字符串设置

setPlaceholderText(str)设置占位提示字符串。
placeholderText()获取占位提示文本。

清空按钮显示设置

setClearButtonEnabled(bool)清空按钮显示。
isClearButtonEnabled()获取是否设置清空按钮。

为按钮添加操作行为

addAction(QIcon, QLineEdit.ActionPosition)

搁前面:QLineEdit.LeadingPosition

搁后面:QLineEdit.TrailingPosition

自动补全设置

setCompleter(QCompleter)设置自动补全。
QCompleter创建Qcompleter对象。

输入限制设置

setMaxLength(int)设置限制输入的长度。
maxLength()获取输入长度。
setReadOnly(bool)设置只读。
isReadOnly()获取是否为只读。
setValidator(QValidator)设置验证器。
setInputMask(mask_str)掩码验证。
hasAcceptableInput()判定输入文本是否通过验证。

是否被编辑

isModified()获取输入框是否被编辑。
setModified(bool)设置输入框是否被编辑。

光标控制

cursorBackward(bool mark,int steps = 1)向后移动steps个字符,mark: True带选中效果;mark: False不带选中效果。
cursorForward(bool mark,int steps = 1)向前移动steps个字符。
cursorWordBackward(bool mark)向后移动一个单词长度。
cursorWordForward(bool mark)向前移动一个单词长度。
home(bool)移动到行首,True带选中,False不带选中。
end(bool)移动到行尾,True带选中,False不带选中。
setCursorPosition(int)设置光标位置。
cursorPosition()获取光标位置。
cursorPositionAt(const QPoint& pos)获取指定坐标位置对应文本光标位置。

文本边距设置

setTextMargins(int left,int top,int right,int bottom)设置文本边距。
getTextMargins()获得文本边距。

对齐方式

setAlignment(Qt.Alignment)设置输入文本的对齐方式。
alignment()获取输入文本的对齐方式。

Qt.Alignment

Qt.AlignLeft左对齐。
Qt.AlignRight右对齐。
Qt.AlignHCenter水平居中对齐。
Qt.AlignJustify此处同左对齐。
Qt.AlignTop顶部对齐。
Qt.AlignBottom底部对齐。
Qt.AlignVCenter垂直居中对齐。
Qt.AlignBaseline基线对齐。
Qt.AlignCenter等同于Qt.AlignHCenter | Qt.AlignVCenter

常用编辑功能

backspace()退格,删除选中文本或删除光标左侧一个字符。
del_()删除,删除选中文本或删除光标右侧的一个字符。
clear()清空,删除所有文本框内容。
copy()复制。
cut()剪切。
paste()粘贴。
undo()撤消。
isUndoAvailable()获取撤销是否可用。
redo()重做。
isRedoAvailable()获取重做是否可用。
setDragEnabled(bool)设置选中文本后是否可以拖拽。

文本选中相关

setSelection(start_pos, length)选中指定区间的文本。
selectAll()选中所有文本。
deselect()取消选中已选择文本。
hasSelectedText()是否有选中文本。
selectedText() -> str获取选中的文本。
selectionStart() -> int选中的开始位置。
selectionEnd() -> int选中的结束位置。
selectionLength() -> int选中的长度。

 信号

textEdited( text)文本编辑时发射的信号。
textChanged(text)文本框文本发生改变时发出的信号。
returnPressed()按下回车键时发出的信号。
editingFinished()结束编辑时发出的信号。
cursorPositionChanged(int oldPos,int newPos)光标位置发生改变时发出的信号。
selectionChanged()选中的文本发生改变时发出的信号。

QFrame继承自QWidget

QFrame是一个基类, 可以选择直接使用,主要控制一些边框的样式,例如凸起、凹下、阴影、线宽。

组合效果图标题

 框架形状设置

setFrameShape(QFrame.Shape)

QFrame.NoFrame:QFrame什么都没画。

QFrame.Box:QFrame围绕其内容绘制一个框。

QFrame.Panel:QFrame绘制一个面板,使内容显得凸起或凹陷。

QFrame.HLine:QFrame绘制一条没有框架的水平线(用作分隔符)。

QFrame.VLine:QFrame绘制一条无框架的垂直线(用作分隔符)。

QFrame.StyledPanel:绘制一个矩形面板,其外观取决于当前的GUI样式。它可以升起或凹陷。

frameShape()获取QFrame框架的样式。

框架阴影设置

setFrameShadow(QFrame.Shadow)

QFrame.Plain:框架和内容与周围环境呈现水平;(没有任何3D效果)。

QFrame.Raised:框架和内容出现; 使用当前颜色组的浅色和深色绘制3D凸起线。

QFrame.Sunken:框架和内容出现凹陷; 使用当前颜色组的浅色和深色绘制3D凹陷线。

frameShadow()获取设置的阴影样式。

框架的线宽设置

setLineWidth(int width)设置外线宽度。
lineWidth()获取外线宽度。
setMidLineWidth(int width)设置中线宽度。
midLineWidth()获取中线宽度。
frameWidth()获取总宽度。

框架样式组合设置

setFrameStyle(int style)

style为形状和阴影的组合。

例子:setFrameStyle(QFrame.Box | QFrame.Raised)

frameStyle()获取样式组合。

框架矩形设置

setFrameRect(QRect)设置框架矩形。
frameRect()获取框架矩形。

QAbstractSlider继承自QWidget

数值范围

setMaximum(int)设置最大值。
maximum() -> int获取最大值。
setMinimum(int)设置最小值。
minimum() -> int获取最小值。

当前数值设置

setValue(int)设置当前数值。
value() -> int获取当前数值。

步长设置

setPageStep(int)
pageStep() -> int
setSingleStep(int)
singleStep() -> int

是否追踪

setTracking(bool enable)value是否跟随着滑块的位置变化而变化, 默认值为True。
hasTracking() -> bool获取是否追踪。

滑块位置设置

setSliderPosition(int)设置滑块位置。
sliderPosition() -> int获取滑块位置。

倒立外观-大小头反过来

setInvertedAppearance(bool)设置倒立外观
invertedAppearance() -> bool获取是否设置倒立外观

操作反转-上下键位反过来

setInvertedControls(bool)设置操作反向。
invertedControls() -> bool获取是否设置操作反向。

滑块方向设置

setOrientation(Qt.Orientation)设置滑块方向。
orientation() -> Qt.Orientation获取滑块方向的对象。

是否按下滑块

setSliderDown(bool)设置是否按下滑块。
isSliderDown() -> bool获取设置是否按下滑块。

信号 

valueChanged()滑块数值发生改变时。
sliderPressed()滑块被按下时。
sliderMoved(int value)滑块被移动时。
sliderReleased()滑块被释放时。
actionTriggered(int action)

触发某个行为时,返回某个行为的整型。

QAbstractSlider.SliderNoAction:没有行为。

QAbstractSlider.SliderSingleStepAdd:滑块单步步长增加时。

QAbstractSlider.SliderSingleStepSub:滑块单步步长减少时。

QAbstractSlider.SliderPageStepAdd:页的步长增加。

QAbstractSlider.SliderPageStepSub:页的步长减少。

QAbstractSlider.SliderToMinimum:滑块到达最少值。

QAbstractSlider.SliderToMaximum:滑块到达最大值。

QAbstractSlider.SliderMove:滑块移动时。

rangeChanged(int min,int max)滑块的总范围发生改变时。

QAbstractScrollArea继承自QFrame

水平和垂直滚动条设置

setHorizo​​ntalScrollBar(QScrollBar * scrollBar)设置水平滚动条。
horizo​​ntalScrollBar() -> QScrollBar获取水平滚动条。
setVerticalScrollBar(QScrollBar * scrollBar)设置垂直滚动条。
verticalScrollBar() -> QScrollBar获取垂直滚动条。

滚动条策略

setHorizo​​ntalScrollBarPolicy(Qt.ScrollBarPolicy)设置水平滚动条策略。
horizo​​ntalScrollBarPolicy() -> QScrollBar获取水平滚动条策略。
setVerticalScrollBarPolicy(Qt.ScrollBarPolicy)设置垂直滚动条策略。
verticalScrollBarPolicy() -> QScrollBar获取垂直滚动条策略。

Qt.ScrollBarPolicy

Qt.ScrollBarAsNeeded当内容太大而不适合时,QAbstractScrollArea显示滚动条,默认。
Qt.ScrollBarAlwaysOffQAbstractScrollArea从不显示滚动条。
Qt.ScrollBarAlwaysOn具有瞬态滚动条的系统会忽略此属性(例如,在版本10.7的Mac上)。

角落控件设置

setCornerWidget(QWidget *widget)设置角落控件。
cornerWidget() -> QWidget获取角落控件。

信号


QTextEdit继承自QAbstractScrollArea

QTextEdit可以加载纯文本和富文本文件以显示图像,列表和表格,如果文本太大而无法在文本编辑的视口中查看,则会出现滚动条,其支持的HTML4标签子集。

占位提示文本设置

setPlaceholderText(str)设置占位提示文本。
placeholderText() -> str获取占位提示文本。

内容设置

setPlainText(str)设置文本。
insertPlainText(str)在光标处加入文本。
toPlainText() -> str获取文本。
setHtml(str)设置html文本。
insertHtml(str)在光标加入html文本。
toHtml() -> str获取html文本。
setText(str)添加文本自动识别是普通文本还是html。
clear()清空内容。

自动格式化

setAutoFormatting(QTextEdit.AutoFormatting)

QTextEdit.AutoNone:不要做任何自动格式化。

QTextEdit.AutoBulletList:自动创建项目符号列表(例如,当用户在最左侧列中输入星号('*')时,或在现有列表项中按Enter键。

QTextEdit.AutoAll:应用所有自动格式。目前仅支持自动项目符号列表。

autoFormatting() -> QTextEdit.AutoFormatting获取自动格式化策略。

软换行模式设置

setLineWrapMode(QTextEdit.LineWrapMode)设置软换行模式。
lineWrapMode() -> QTextEdit.LineWrapMode获取软换行模式策略。
setWordWrapMode(self,QTextOption.WrapMode)设置单词换行模式。
wordWrapMode(self) -> QTextOption.WrapMode获取单词换行模式策略。

QTextEdit.LineWrapMode

QTextEdit.NoWrap没有软换行, 超过宽度后, 会产生水平滚动条。
QTextEdit.WidgetWidth以控件的宽度为限制,但会保持单词的完整性。
QTextEdit.FixedPixelWidth

填充像素宽度。

配合setLineWrapColumnOrWidth(int)

QTextEdit.FixedColumnWidth

填充列的宽度。

配合setLineWrapColumnOrWidth(int)

QTextOption.WrapMode

QTextOption.NoWrap文本根本没有包装。
QTextOption.WordWrap保持单词完整性。
QTextOption.ManualWrap与QTextOption.NoWrap相同。
QTextOption.WrapAnywhere宽度够了之后, 随意在任何位置换行。
QTextOption.WrapAtWordBoundaryOrAnywhere尽可能赶在单词的边界, 否则就在任意位置换行。

覆盖模式-切换覆盖模式, 修改文本内容

setOverwriteMode(bool)切换覆盖模式。
overwriteMode() -> bool获取是否切换为覆盖模式。

光标设置-一般是结合覆盖模式来做, 标识光标的宽度, 给用户以提醒

setCursorWidth(int)设置光标宽度。
cursorWidth()获取光标宽度。
cursorRect() -> QRect获取光标矩形。

对齐方式设置

setAlignment(Qt.Alignment)

Qt.AlignLeft、Qt.AlignRight、Qt.AlignCenter。

alignment() -> Qt.Alignment获取对齐方式。

字体格式设置

setFontWeight(int)

设置字体粗细。QFont.Thin、QFont.ExtraLight、QFont.Light

QFont.Normal、QFont.Medium、QFont.DemiBold、QFont.Bold

QFont.ExtraBold、QFont.Black。

fontWeight()获取字体粗细值。
setFontItalic(bool)设置字体斜体。
fontItalic()获取字体是否设置为斜体。
setFontPointSize(float)设置字体尺寸。
fontPointSize()获取字体尺寸。
setFontUnderline(bool)设置字体下划线。
fontUnderline()获取是否设置字体下划线。
setCurrentFont(QFont)统一设置QFont。
currentFont() -> QFont获取字体QFont.

颜色设置

setTextBackgroundColor(QColor)将当前文本背景颜色设置为指定颜色。
textBackgroundColor() -> QColor获取文本背景颜色。
setTextColor(QColor)将当前文本颜色设置为指定颜色。
textColor() -> QColor获取文本背景颜色

只读设置

setReadOnly(self, bool)设置为只读模式。
isReadOnly() -> bool获取是否为只读模式。

信号

textChanged()文本内容发生改变时, 发射的信号。
selectionChanged()选中内容发生改变时, 发射的信号。
cursorPositionChanged()光标位置发生改变时, 发射的信号。
copyAvailable(bool yes)复制可用时。
redoAvailable(bool available)重做可用时。
undoAvailable(bool available)撤销可用时。

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
为了升级案例7-3的日记本,我们可以加入一些新的功能,如日期选择器、关键词搜索等。 首先,我们可以使用PyQt5中的QCalendarWidget类来添加日期选择器。我们还可以添加一个搜索框和按钮,以便用户可以按关键词搜索他们的日记。这需要使用QLineEdit和QPushButton类。 在主窗口中,我们可以创建一个垂直布局,并将QCalendarWidget、QLineEdit、QPushButton和QTextEdit添加到其中。这将使用户能够选择日期、输入关键词并搜索日记,然后在QTextEdit中查看结果。 我们还可以添加一个菜单栏,以便用户可以保存和打开他们的日记。这需要使用QMenuBar、QMenu和QAction类。 最后,我们可以将日记保存为文本文件,并使用QFileDialog类选择文件的保存位置。当用户打开日记时,我们将使用QFileDialog类选择文件的位置,并将其加载到QTextEdit中。 以下是一个简单的代码示例: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QCalendarWidget, QVBoxLayout, QLineEdit, QPushButton, QTextEdit, QMenuBar, QMenu, QAction, QFileDialog from datetime import datetime class Diary(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('日记本') self.setGeometry(100, 100, 800, 600) # 创建菜单栏 menubar = self.menuBar() fileMenu = menubar.addMenu('文件') # 创建菜单项 saveAction = QAction('保存日记', self) saveAction.triggered.connect(self.saveDiary) fileMenu.addAction(saveAction) openAction = QAction('打开日记', self) openAction.triggered.connect(self.openDiary) fileMenu.addAction(openAction) # 创建布局 layout = QVBoxLayout() # 添加日历控件 self.calendar = QCalendarWidget() self.calendar.clicked.connect(self.showDiary) layout.addWidget(self.calendar) # 添加搜索框和按钮 searchLayout = QHBoxLayout() self.searchBox = QLineEdit() self.searchButton = QPushButton('搜索') self.searchButton.clicked.connect(self.searchDiary) searchLayout.addWidget(self.searchBox) searchLayout.addWidget(self.searchButton) layout.addLayout(searchLayout) # 添加文本框 self.textEdit = QTextEdit() layout.addWidget(self.textEdit) # 设置主窗口的中心部分 centralWidget = QWidget() centralWidget.setLayout(layout) self.setCentralWidget(centralWidget) def saveDiary(self): fileName, _ = QFileDialog.getSaveFileName(self, '保存日记', '', 'Text Files (*.txt)') if fileName: with open(fileName, 'w') as f: f.write(self.textEdit.toPlainText()) def openDiary(self): fileName, _ = QFileDialog.getOpenFileName(self, '打开日记', '', 'Text Files (*.txt)') if fileName: with open(fileName, 'r') as f: self.textEdit.setPlainText(f.read()) def showDiary(self): date = self.calendar.selectedDate() fileName = date.toString('yyyy-MM-dd') + '.txt' try: with open(fileName, 'r') as f: self.textEdit.setPlainText(f.read()) except FileNotFoundError: self.textEdit.setPlainText('') def searchDiary(self): keyword = self.searchBox.text() if keyword: result = '' for year in range(2000, datetime.now().year+1): for month in range(1, 13): for day in range(1, 32): try: with open(f'{year}-{month:02d}-{day:02d}.txt', 'r') as f: content = f.read() if keyword in content: result += f'{year}-{month:02d}-{day:02d}\n{content}\n\n' except FileNotFoundError: pass if result: self.textEdit.setPlainText(result) else: self.textEdit.setPlainText('未找到相关日记。') else: self.showDiary() if __name__ == '__main__': app = QApplication([]) diary = Diary() diary.show() app.exec_() ``` 在这个例子中,我们添加了一个菜单栏,其中包含保存和打开日记的选项。我们还使用了QCalendarWidget、QLineEdit和QPushButton类添加了一些新的控件。最后,我们将日记保存为文本文件,并使用QFileDialog类选择文件的位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SamRol

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值