pycharm-qt5&6&pyside-常用控件
- 一:文本型控件
- 1> QLabel 标签控件
- 1. 基本概念
- 2. 文本
- 简单文本
- 富文本
- 3. 显示图像
- 图片加载
- 动图加载
- 4. QSS美化
- 5. 事件响应
- 2> QlineEdit 单行文本窗
本文仅介绍常用控件及控件函数等
一:文本型控件
1> QLabel 标签控件
显示静态文本、富文本、图像以及动画
1. 基本概念
标签:一种用户界面元素,用于显示文本或图像。
文本标签:显示纯文本或富文本(支持HTML)。
图像标签:显示图像。
动画标签:显示动画(如GIF
2. 文本
简单文本
import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidgetclass QLabelWidget(QWidget):def __init__(self, parent=None):super().__init__(parent)self.resize(200, 200)# 创建一个QLabel实例self.label = QLabel("raw text", self)self.label.setText('Hello, PySide6!') # 设置文本, 由 raw text -> Hello, PySide6!print(self.label.text()) # 获取label文本if __name__ == '__main__':app = QApplication(sys.argv)window = QLabelWidget()window.show()sys.exit(app.exec())======================self.label.setText('Hello, PySide6!') # 设置文本, 由 raw text -> Hello, PySide6!print(self.label.text()) # 获取label文本
富文本
import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidgetclass QLabelWidget(QWidget):def __init__(self, parent=None):super().__init__(parent)self.resize(200, 200)# 创建一个QLabel实例self.label = QLabel("raw text", self)self.label.setText("<html><body>我的博客 <a href='https://mp.csdn.net/'>CSDN-45度看我</a><b>公众号 </b> <i>demo</i></body></html>")self.label.setGeometry(20, 20, 160, 70)self.label.setWordWrap(True) # 设置自动换行self.show()if __name__ == '__main__':app = QApplication(sys.argv)window = QLabelWidget()window.show()sys.exit(app.exec())
3. 显示图像
图片加载
from PySide6.QtGui import QPixmap, QFont
import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidget
from PySide6.QtCore import Qtclass QLabelWidget(QWidget):def __init__(self, parent=None):super().__init__(parent)self.resize(200, 200)# 创建一个QLabel实例self.label = QLabel("raw text", self)self.label.setText('Hello, PySide6!') # 设置文本, 由 raw text -> Hello, PySide6!# 自适应self.label.setGeometry(0,0,200,200) # 固定大小和位置self.label.setPixmap(QPixmap(r'F:\PySide_QT6\resources\ui\desktop_icon.ico'))self.label.setScaledContents(True)# 缩放模式pixmap = QPixmap(r'F:\PySide_QT6\resources\ui\desktop_icon.ico')self.label.setPixmap(pixmap.scaled(200, 200))if __name__ == '__main__':app = QApplication(sys.argv)window = QLabelWidget()window.show()sys.exit(app.exec()===================================================#1 自适应#2 缩放模式
动图加载
import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidget
from PySide6.QtGui import QMovieclass QLabelWidget(QWidget):def __init__(self, parent=None):super().__init__(parent)self.resize(200, 200)# 创建一个QLabel实例self.label = QLabel("raw text", self)self.label.setText('Hello, PySide6!') # 设置文本, 由 raw text -> Hello, PySide6!movie = QMovie(r'F:\DeskTop\095de42c41b64297b2f74986c14d4296.gif')movie.setSpeed(200) # 2倍速 默认100(1倍)self.label.setMovie(movie)movie.start()if __name__ == '__main__':app = QApplication(sys.argv)window = QLabelWidget()window.show()sys.exit(app.exec())
4. QSS美化
import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidget
from PySide6.QtCore import Qtclass QLabelWidget(QWidget):def __init__(self, parent=None):super().__init__(parent)self.resize(200, 200)# 创建一个QLabel实例self.label = QLabel("raw text", self)self.label.setText('Hello, PySide6!') # 设置文本, 由 raw text -> Hello, PySide6!# 设置样式self.label.setStyleSheet("""QLabel {color: #000000; /* 设置文字颜色 */background-color: yellow; /* 设置背景颜色 */border: 1px solid black; /* 添加边框 */border-radius: 10px; /* 添加圆角边框 */font-size: 20px; /* 设置字体大小 */font-weight: bold; /* 设置字体加粗 */font-style: italic; /* 设置字体斜体 */font-family: "Arial"; /* 设置字体 */text-decoration: underline; /* 设置文本下划线 */margin: 5px; /* 添加外边距 */padding: 5px; /* 添加内边距 */}QLabel:hover {background-color: lightblue; /* 设置鼠标悬停时的背景颜色 */color: white; /* 设置鼠标悬停时的文字颜色 */}""")if __name__ == '__main__':app = QApplication(sys.argv)window = QLabelWidget()window.show()sys.exit(app.exec())
5. 事件响应
import sysfrom PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow, QTextEditclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.label = QLabel("Click in this window")self.setCentralWidget(self.label)self.setMouseTracking(True) # 调用 self.setMouseTracking(Ture) 来解除这种状态def mouseMoveEvent(self, e):self.label.setText("mouseMoveEvent")def mousePressEvent(self, e):if e.button() == Qt.MouseButton.LeftButton:print('Qt.MouseButton.LeftButton')elif e.button() == Qt.MouseButton.RightButton:print('Qt.MouseButton.RightButton')elif e.button() == Qt.MouseButton.MiddleButton:print('Qt.MouseButton.MiddleButton')def mouseReleaseEvent(self, e):self.label.setText("mouseReleaseEvent")def mouseDoubleClickEvent(self, e):self.label.setText("mouseDoubleClickEvent")def keyPressEvent(self, e):print(e.enum)if e.enum == Qt.Key.Key_0:print('press keyborad number 0')def wheelEvent(self, e):super(MainWindow, self).wheelEvent(e)print("滚轮滚动了")def keyPressEvent(self, e):super(MainWindow, self).keyPressEvent(e)# 如果点击esc键,关闭窗口if e.key() == (int('0x1000005', 16)-1):print('按下enter按键')app = QApplication(sys.argv)window = MainWindow()
window.show()app.exec()
==================================
mouse** 鼠标事件触发
wheelEvent** 滚轮滚动触发
key** 键盘按下触发