文章目录
- 一、经常用到的控件总结
-
- 1、布局
- 2、按钮
-
- [api: `QPushButton`](#api:
QPushButton
) - 使用方法:
- [api: `QPushButton`](#api:
- 3、单行文本框
- 4、QLabel文本显示
-
- [api: `QLabel('Hello, World!')`](#api:
QLabel('Hello, World!')
) - 使用方法:
- [api: `QLabel('Hello, World!')`](#api:
- 5、QTextEdit文本编辑
-
- [api: text_edit = QTextEdit()](#api: text_edit = QTextEdit())
- 二、插件使用
一、经常用到的控件总结
1、布局
(1)垂直布局
right_layout = QVBoxLayout()
(2)水平布局
main_layout = QHBoxLayout()
以上这两种好像没什么需要叙述的,布局控件可以让界面看起来更美观,并且在拖动以及最大最小化的时候,免受窗口变形的影响。
2、按钮
api: QPushButton
使用方法:
python
self.load_button = QPushButton('加载图片') # 创建按钮
self.load_button.clicked.connect(self.load_image) # 将按钮链接到load_image方法(函数)
imageload_layout.addWidget(self.load_button) # 添加到布局
3、单行文本框
api: QLineEdit
使用方法:
python
self.status_input = QLineEdit() # 创建状态框
imageload_layout.addWidget(self.status_input) # 添加到布局
right_layout.addLayout(imageload_layout) # 添加到布局
注释:
QLineEdit 是 Qt 框架中的一个类,用于创建一个单行文本框。Qt 是一个广泛使用的跨平台图形用户界面(GUI)库,QLineEdit 是其中的一个控件,用于接收和显示用户输入的文本。它可以用于各种应用程序中,例如表单输入、搜索框、过滤器等。
QLineEdit 的基本特性
文本输入:允许用户输入单行文本。
显示文本:可以显示文本,并允许用户编辑。
占位符文本:可以设置占位符文本,提示用户应该输入什么内容。
文本格式化:支持设置文本格式,例如密码模式(即隐藏文本)或限制输入字符类型。
信号和槽机制:支持 Qt 的信号和槽机制,可以用来响应文本改变、焦点变化等事件。
常用方法和属性
setText(text):设置文本框的文本。
text():获取文本框中的文本。
setPlaceholderText(text):设置占位符文本。
setReadOnly(bool):设置文本框是否只读。
setEchoMode(mode):设置回显模式,例如设置为 QLineEdit.Password 可以隐藏输入的文本(用于密码输入)。
4、QLabel文本显示
api: QLabel('Hello, World!')
使用方法:
(1)显示文本:
python
label = QLabel('Hello, World!')
(2)显示图像:
你可以使用 QLabel 来显示图像,通过设置其 pixmap 属性来加载图像文件。
python
from PyQt5.QtGui import QPixmap
label = QLabel()
pixmap = QPixmap('image.png')
label.setPixmap(pixmap)
(3)富文本
QLabel 支持 HTML 格式的文本,可以用来显示格式化文本,例如带有不同字体颜色或样式的文本。
python
label = QLabel('<b>Hello, <font color="red">World!</font></b>')
(4)文本对齐
你可以设置 QLabel 中文本的对齐方式(如左对齐、右对齐、居中对齐等)。
python
label.setAlignment(Qt.AlignCenter)
5、QTextEdit文本编辑
api: text_edit = QTextEdit()
python
text_edit.setText("This is a QTextEdit widget.")
二、插件使用
1、图片阅读器方法
python
class ImageViewer(QGraphicsView):
def __init__(self):
super().__init__()
self.setRenderHint(QPainter.Antialiasing) # 启用抗锯齿,减少图像边缘的锯齿状效果
self.setRenderHint(QPainter.SmoothPixmapTransform) # 启用平滑图像变换,避免图像在缩放的时候出现模糊和失真
self.setScene(QGraphicsScene()) # 这是用于显示图像项的容器
self.image_item = None #
self.setDragMode(QGraphicsView.ScrollHandDrag) # 允许用户通过拖动视图来滚动查看图像。
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # 禁用水平和垂直滚动条
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
def load_image(self, file_path): # 定义一个名为 load_image 的方法,用于加载图像
pixmap = QPixmap(file_path) # 创建一个 QPixmap 对象 pixmap,从指定的文件路径加载图像。
# 如果 image_item 已经存在(即当前有图像显示在视图中),则从场景中移除该图像项,以准备显示新图像。
if self.image_item:
self.scene().removeItem(self.image_item)
self.image_item = self.scene().addPixmap(pixmap) # 将新的图像项添加到场景中
# 置图像项的变换模式为 Qt.SmoothTransformation,以确保图像在缩放时的平滑效果。
self.image_item.setTransformationMode(Qt.SmoothTransformation)
# 设置场景的矩形区域 sceneRect 为图像的矩形区域,确保整个图像在视图中可见。
self.setSceneRect(QRectF(pixmap.rect()))
# 调整视图的缩放级别,使图像在视图中适合显示,同时保持图像的纵横比
self.fitInView(self.sceneRect(), Qt.KeepAspectRatio)
# 重写 wheelEvent 方法以处理鼠标滚轮事件。event 是 QWheelEvent 对象,表示滚轮事件的详细信息。
def wheelEvent(self, event: QWheelEvent):
factor = 1.2
if event.angleDelta().y() < 0:
factor = 1 / factor
self.scale(factor, factor)
#
def mousePressEvent(self, event: QMouseEvent):
if event.button() == Qt.LeftButton and (event.modifiers() & Qt.ControlModifier):
self.setDragMode(QGraphicsView.ScrollHandDrag)
else:
super().mousePressEvent(event)
def mouseReleaseEvent(self, event: QMouseEvent):
if event.button() == Qt.LeftButton and (event.modifiers() & Qt.ControlModifier):
self.setDragMode(QGraphicsView.NoDrag)
else:
super().mouseReleaseEvent(event)
class MainWindow(QMainWindow):
def __init__(self):
......
self.image_viewer = ImageViewer()
main_layout.addWidget(self.image_viewer, 3)
right_layout = QVBoxLayout()
......
def load_image(self):
file_path, _ = QFileDialog.getOpenFileName(self, 'Open Image File', '', 'Images (*.png *.xpm *.jpg *.bmp)')
if file_path:
self.image_viewer.load_image(file_path)
self.status_input.setText(file_path)
self.textbox.append("加载状态:image\n图片路径:{}".format(file_path))
这个代码定义了一个自定义的 QGraphicsView 子类,名为 ImageViewer。它用于显示和操作图像,提供了基本的图像查看功能和一些用户交互的自定义行为。
ImageViewer 继承自
QGraphicsView
。设置了抗锯齿和光滑变换的渲染提示,以提高图像的显示质量。创建了一个空的QGraphicsScene
用于显示图像。初始化时禁用了水平和垂直滚动条,并设置了拖动模式为ScrollHandDrag
。