在 PyQt5 中,状态栏(QStatusBar
)通常用于显示窗口的状态信息或提示。虽然 PyQt5 的 QStatusBar
没有直接提供设置图片作为状态栏项(QStatusBarItem
)的 API,但你可以通过添加一个 QWidget
(如 QLabel
)到状态栏,然后在该 QWidget
中显示图片,来间接实现这一功能。接下来,你可以调整图片的大小和设置左右间距。
以下是一个示例代码,展示了如何在 PyQt5 的 QStatusBar
中添加一个包含图片的 QLabel
,并设置图片的大小和左右间距:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar, QLabel, QVBoxLayout, QWidget
from PyQt5.QtGui import QPixmap
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 初始化UI
self.initUI()
def initUI(self):
# 设置窗口标题和大小
self.setWindowTitle('PyQt5 状态栏图片示例')
self.setGeometry(100, 100, 400, 300)
# 创建状态栏
self.statusBar = self.statusBar()
# 创建一个QWidget,作为容器
container = QWidget()
layout = QVBoxLayout()
# 创建一个QLabel来显示图片
label = QLabel(self)
# 加载图片,确保图片路径正确
pixmap = QPixmap('path_to_your_image.png') # 替换为你的图片路径
# 调整图片大小,例如调整为 32x32
pixmap = pixmap.scaled(32, 32, Qt.KeepAspectRatio, Qt.SmoothTransformation)
label.setPixmap(pixmap)
# 将QLabel添加到布局中
layout.addWidget(label)
# 可以通过设置margin来添加左右间距
layout.setContentsMargins(10, 0, 10, 0) # 左, 上, 右, 下
# 将布局设置给QWidget
container.setLayout(layout)
# 将QWidget添加到状态栏
self.statusBar.addWidget(container)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())
效果:
注意:
- 确保替换
'path_to_your_image.png'
为你的图片实际路径。 - 我使用了
QVBoxLayout
布局,尽管在这个简单的例子中我们只有一个QLabel
,但它提供了设置边距(margin)的功能,这对于控制左右间距非常有用。如果你只需要QLabel
,你也可以不使用布局,但直接设置边距(如果可能的话)会复杂一些。 pixmap.scaled()
方法用于调整图片大小,Qt.KeepAspectRatio
参数确保图片按比例缩放,Qt.SmoothTransformation
参数则使缩放后的图片边缘更平滑。- 本示例中的图片和容器(
QWidget
)是垂直布局(QVBoxLayout
),但在状态栏中通常不需要垂直布局,因此这里仅作为演示如何设置布局和边距。在实际应用中,你可能只需要将QLabel
直接添加到状态栏中,并通过调整QLabel
的样式(如QLabel.setStyleSheet()
)来设置左右间距。