PyQt5(二)常见控件一
常见控件(一)
参考文章:https://www.byhy.net/tut/py/gui/qt_05_1/
本文主要介绍 Qt 的常用控件,按钮、输入框、文本框、表格等;
1. 按钮
1.1 创建按钮
1.2 信号:被点击
当按钮被点击的时候 clicked 信号,可以指定处理该信号的函数。
button.clicked.connect(handleCalc)
def handleCalc():
print("被绑定的点击执行函数")
1.3 按钮禁用
button.setEnabled(False)# 禁用
button.setEnabled(True) #可用,默认情况
1.4 按钮图标
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt,QSize
# 设置图标
self.button.setIcon(QIcon("icon1.png"))
self.button.setIconSize(QSize(30,30))
补充:设置窗体图标。
self.window.setWindowIcon(QIcon("icaon7.png"))
self.button.setIconSize(QSize(30, 30))
2.单行文本框
2.1 文本改变事件
- 当文本框中的内容被键盘编辑,被点击就会发出
textChanged
信号,可以这样指定处理该信号的函数
def __init__():
self.lineedit=QLineEdit(self.window) # 实例化控件,
# 文本发生改变时执行
self.lineedit.textChanged.connect(self.hanleTextChange)# 绑定执行函数
def hanleTextChange(self):
print("我执行了。。。。")
2.2 按回车键执行
def __init__():
self.lineedit=QLineEdit(self.window) # 实例化控件,
# 按下回车键的时执行
self.lineedit.returnPressed.connect(self.hanleTextChange)
def hanleTextChange(self):
print("我执行了。。。。")
2.3 获取文本
def handleCalc(self):
# 获取文本框中的内容
text=self.lineedit.text()
# 显示内容
QMessageBox.about(self.window,'消息提示框',text)
2.4 设置提示
self.lineedit.setPlaceholderText("提示文本")
2.5 设置与清除文本
self.lineedit.setText("啊哈哈哈")
self.lineedit.clear()# 获取玩清除文本
2.6 其他
3.多行文本框
2.1 创建
多行文本框与单行文本框相似;直接示例对应的对象即可;
2.2 信号:光标位置改变
当文本框中的光标位置变动,就会发出 cursorPositionChanged
信号,可以这样指定处理该信号的函数
edit.cursorPositionChanged.connect(handleChanged)
2.3 获取文本
通过 toPlainText
方法获取编辑框内的文本内容,比如
text = edit.toPlainText()
2.4 获取选中文本
# 获取 QTextCursor 对象
textCursor = edit.textCursor()
selection = textCursor.selectedText()
2.5设置提示
通过 setPlaceholderText
方法可以设置提示文本内容,比如
edit.setPlaceholderText('请在这里输入薪资表')
2.6 设置文本
通过 setPlainText
方法设置编辑框内的文本内容 为参数里面的文本字符串,比如
edit.setPlainText('''你好,白月黑羽
hello byhy''')
原来的所有内容会被清除
2.7在末尾添加文本
通过 appendPlainText
方法在编辑框末尾添加文本内容,比如
edit.appendPlainText('你好,白月黑羽')
注意:这种方法会在添加文本后 自动换行
2.8 在光标处插入文本
通过 insertPlainText
方法在编辑框末尾添加文本内容,比如
edit.insertPlainText('你好,白月黑羽')
注意:这种方法 不会
在添加文本后自动换行
2.9 设置最大行数
有时候,代码会不断往文本框添加内容,为了防止占用过多资源,可以设置文本框最大行数。
像这样:
edit.document().setMaximumBlockCount(1000)
就设置最大为 1000行
4.组合选择框
QComboBox
是组合选择框,如下图所示
4.1 信号:选项改变
如果用户操作修改了QComboBox中的选项就会发出 currentIndexChanged
信号,可以这样指定处理该信号的函数
cbox.currentIndexChanged.connect(handleSelectionChange)
4.2 添加一个选项
代码中可以使用 addItem
方法来添加一个选项到 末尾
,参数就是选项文本
cbox.addItem('byhy')
4.3 添加多个选项
代码中可以使用 addItems
方法来添加多个选项到 末尾
,参数是包含了多个选项文本的列表
cbox.addItems(['item1','item2','item3'])
4.4清空选项
代码中可以使用 clear
方法来清空选项,也就是删除选择框内所有的选项
cbox.clear()
4.5 获取当前选项文本
代码中可以使用 currentText
方法来获取当前 选中的选项
的文本,比如
method = cbox.currentText()
5.列表
QListWidget
是列表控件,如下图所示
Qt Designer 如下图 选择:
5.1 添加一个选项
代码中可以使用 addItem
方法来添加一个选项到 末尾
,参数就是选项文本
listWidget.addItem('byhy')
5.2 添加多个选项
代码中可以使用 addItems
方法来添加多个选项到 末尾
,参数是包含了多个选项文本的列表
listWidget.addItems(['itm1','itm2','itm3'])
5.3 删除一个选项
代码中可以使用 takeItem
方法来删除1个选项,参数是该选项所在行
listWidget.takeItem(1)
就会删除第二行选项
5.4 清空选项
代码中可以使用 clear
方法来清空选项,也就是删除选择框内所有的选项
listWidget.clear()
5.5 获取当前选项文本
currentItem
方法可以得到列表当前选中项对象(QListWidgetItem) ,再调用这个对象的 text
方法,就可以获取文本内容,比如
listWidget.currentItem().text()
就获取了 第1行,第1列
的单元格里面的文本。
listWidget.currentItem().text()