pycharm-qt5&6&pyside-常用控件
本文仅介绍常用控件及控件函数等
一:文本型控件
1> QLabel 标签控件
显示静态文本、富文本、图像以及动画
1. 基本概念
标签:一种用户界面元素,用于显示文本或图像。
文本标签:显示纯文本或富文本(支持HTML)。
图像标签:显示图像。
动画标签:显示动画(如GIF
2. 文本
简单文本
import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidget
class 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, QWidget
class 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.youkuaiyun.com/'>优快云-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 Qt
class 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 QMovie
class 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 Qt
class 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 sys
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow, QTextEdit
class 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** 键盘按下触发