QTextEdit
QTextEdit类是一个多行文本框控件,可以显示多行文本内容,当文本内容超出控件显示范围是,可以显示水平个垂直滚动条。QTextEdit不仅可以显示文本还可以显示HTml文档。
方法 | 描述 |
setPlainText() | 设置多行文本框的文本内容。 |
toPlainText() | 返回多行文本框的文本内容。 |
setHtml() | 设置多行文本框的内容为HTML文档,HTML文档是描述网页的 |
totHeml() | 返回多行文本框的HTML文档内容。 |
clear() | 清除多行文本框的内容。 |
案例十三(QTextEdit的使用)
from PyQt5.QtWidgets import QApplication, QTextEdit, QWidget, QPushButton, QVBoxLayout
import sys
class TextEditDemo(QWidget):
def __init__(self, parent=None):
super(TextEditDemo, self).__init__(parent)
self.setWindowTitle("QTextEdit例子")
self.resize(300, 300)
self.textEdit = QTextEdit()
self.btnPress1=QPushButton("显示文本")
self.btnPress2 = QPushButton("显示HTML")
layout = QVBoxLayout()
layout.addWidget(self.textEdit)
layout.addWidget(self.btnPress1)
layout.addWidget(self.btnPress2)
self.setLayout(layout)
self.btnPress1.clicked.connect(self.btnPress1_Clicked)
self.btnPress2.clicked.connect(self.btnPress2_Clicked)
def btnPress1_Clicked(self):
self.textEdit.setPlainText("Hello PyQt5!\n单击按钮")
def btnPress2_Clicked(self):
self.textEdit.setHtml("<font color='red' size='6'><red>Hello PyQt5!\n单击按钮。</font>")
if __name__=="__main__":
app=QApplication(sys.argv)
win = TextEditDemo()
win.show()
sys.exit(app.exec_())
按钮类控件
QAbstractButton
状态表 | 含义 |
isDown() | 提示按钮是否被按下 |
isChecked() | 提示按钮是否已经标记 |
isEnable() | 提示按钮是否可以被用户点击 |
isCheckAble() | 提示按钮是否为可标记的 |
setAutoRepeat() | 设置按钮是否在用户长按时可以自动重复执行 |
信号 | 含义 |
Pressed | 当鼠标指针在按钮上并按下左键时触发该信号。 |
Released | 当鼠标左键被释放时触发该信号。 |
Clicked | 当鼠标左键被按下然后释放时,或者快捷键被释放时触发该信号。 |
Toggled | 当按钮的标记状态发生改变时触发该信号。 |
QPushButton
方法 | 描述 |
setCheckable() | 设置按钮是否被选中,如果设置为True,则表示按钮将保持已点击和释放状态。 |
toggle() | 在按钮状态之间切换。 |
setIcon() | 设置按钮上的图标 |
setEnabled() | 设置按钮是否可以使用,当设置为False时,按钮变成不可用状态,点击它不会发射信号。 |
isChecked() | 返回按钮的状态。返回值为True或False |
setDefault() | 设置按钮的默认状态。 |
setText(0 | 设置按钮的显示文本。 |
text() | 返回按钮的显示文本。 |
案例十四(QPushButton设置快捷键)
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
layout = QVBoxLayout()
self.btn1 = QPushButton("Button1")
self.btn1.setCheckable(True)
self.btn1.toggle()
self.btn1.clicked.connect(lambda:self.whichbtn(self.btn1))
self.btn1.clicked.connect(self.btnstate)
layout.addWidget(self.btn1)
self.btn2 = QPushButton("image")
self.btn2.setIcon(QIcon(QPixmap("./images/215843-1542290323a8da.jpg")))
self.btn2.clicked.connect(lambda:self.whichbtn(self.btn2))
layout.addWidget(self.btn2)
self.setLayout(layout)
self.btn3 = QPushButton("Disabled")
self.btn3.setEnabled(False)
layout.addWidget(self.btn3)
self.btn4 = QPushButton("&Download")
self.btn4.setDefault(True)
self.btn4.clicked.connect(lambda:self.whichbtn(self.btn4))
layout.addWidget(self.btn4)
self.setWindowTitle("Button demo")
def btnstate(self):
if self.btn1.isChecked():
print("button pressed")
else:
print("button released")
def whichbtn(self, btn):
print("cliched button is "+btn.text())
if __name__=="__main__":
app=QApplication(sys.argv)
win = Form()
win.show()
sys.exit(app.exec_())
第一个按钮,通过toggle()函数来切换按钮状态。
第二个按钮,上面显示一个图标,使用setIcom()方法接受一个QPixmap对象的图像文件作为输入参数。
第三个按钮,使用setEnabled()方法来禁用btn3按钮。
第四个按钮,使用setDefault()方法来设置按钮的默认状态。快捷键是“&+文本”,这个代码的快捷键是“Alt+D”调用槽函数。
QRadioButton
QRadioButton类是继承自QAbstractButton类,它提供了一组可供选择的按钮和文本标签用户选择一个选项,标签用于显示对应的文本信息。
方法 | 描述 |
setCheched() | 设置按钮是否已经被选中,可以改变按选择的选中状态,如果设置为True,则表示单选钮将保持已点击和释放状态。 |
isChecked() | 返回单选钮的状态,返回值为True或False |
setText() | 设置单选钮的显示文本 |
text() | 返回单选钮的显示文本。 |
toggeld信号是在切换单选钮状态(开,关)时发射的,而clicked信号则在每次点击单选钮时都会发射。在实际中,一般只有状态是才有必要去响应,因此toggled信号更适合用于状态监控。
案例十五(QRadioButton按钮的使用)
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Readiodemo(QWidget):
def __init__(self,parent = None):
super(Readiodemo,self).__init__(parent)
layout = QHBoxLayout()
self.btn1=QRadioButton("Button1")
self.btn1.setChecked(True)
self.btn1.toggled.connect(lambda:self.btnstate(self.btn1))
layout.addWidget(self.btn1)
self.btn2 = QRadioButton("Button2")
self.btn2.toggled.connect(lambda:self.btnstate(self.btn2))
layout.addWidget(self.btn2)
self.setLayout(layout)
self.setWindowTitle("ReadioButton demo")
def btnstate(self, btn):
if btn.text()=="Button1":
if btn.isChecked()==True:
print(btn.text()+"is selected")
else:
print(btn.text()+"is deselected")
if btn.text()=="Button2":
if btn.isChecked()==True:
print(btn.text()+"is selected")
else:
print(btn.text()+"is deselected")
if __name__=="__main__":
app=QApplication(sys.argv)
win = Readiodemo()
win.show()
sys.exit(app.exec_())
QCheckBox
QcheckBox类继承QAbstractButton类,它提供了一组带文本标签的复选框,用户可以选择多个选项。
QCheckBox(复选框)和QRadioButton(单选钮)都是选项按钮,它们的区别是对用户选择的限制:单选钮提供了“多选一”的选择,而复选框提供的是“多选多”的选择。
方法 | 描述 |
setChecked() | 设置复选框的状态,设置为True时表示选中复选框,设置为False时表示选中复选框。 |
setText() | 设置复选框的显示文本。 |
text() | 返回复选框的显示文本。 |
isChecked() | 检查复选框是否被选中。 |
setTriState() | 设置复选框为一个三态复选框。 |
名称 | 值 | 含义 |
Qt.Checked | 2 | 组件没有被选中(默认值) |
Qt.PartiallyChecked | 1 | 组件被半选中 |
Qt.Unchecked | 0 | 组件被选中 |
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
class checkBoxDemo(QWidget):
def __init__(self, parent=None):
super(checkBoxDemo, self).__init__(parent)
groupBox=QGroupBox("Checkboxes")
groupBox.setFlat(True)
layout=QHBoxLayout()
self.checkBox1=QCheckBox("&CHeckbox1")
self.checkBox1.setChecked(True)
self.checkBox1.stateChanged.connect(lambda:self.btnstate(self.checkBox1))
layout.addWidget(self.checkBox1)
self.checkBox2=QCheckBox("CheckBox2")
self.checkBox2.toggled.connect(lambda:self.btnstate(self.checkBox2))
layout.addWidget(self.checkBox2)
self.checkBox3=QCheckBox("checkBox3")
self.checkBox3.setTristate(True)
self.checkBox3.setCheckState(Qt.PartiallyChecked)
self.checkBox3.stateChanged.connect(lambda:self.btnstate(self.checkBox3))
layout.addWidget(self.checkBox3)
groupBox.setLayout(layout)
mainLayout=QVBoxLayout()
mainLayout.addWidget(groupBox)
self.setLayout(mainLayout)
self.setWindowTitle("CheckBox demo")
def btnstate(self, btn):
chk1Status=self.checkBox1.text()+",isChecked="+str(self.checkBox1.isChecked())+",checkState"+str(self.checkBox1.checkState())+"\n"
chk2Status=self.checkBox2.text()+",isChecked="+str(self.checkBox2.isChecked())+",checkState"+str(self.checkBox2.checkState())+"\n"
chk3Status=self.checkBox3.text()+",isChecked="+str(self.checkBox3.isChecked())+",checkState"+str(self.checkBox3.checkState())+"\n"
print(chk1Status+chk2Status+chk3Status)
if __name__=="__main__":
app=QApplication(sys.argv)
win = checkBoxDemo()
win.show()
sys.exit(app.exec_())
声明
上面这些代码都是我在参照课本学习时敲的,都是来自王硕、孙洋洋著的《PyQt5快速开发与实战》,写下这些笔记是增加我的印象,同时也是供我参照。如有侵权,联系删除。