文章目录
pyqt5 布局
pyqt5 标题栏 设置图标和标题
class query_window(QtWidgets.QMainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setFixedSize(1890, 943) #禁止缩放
self.setWindowIcon(QtGui.QIcon("./qt.ico")) #设置标题图标
self.setWindowTitle("常规与超导电缆投资分析") #设置标题
...
pyqt5 工具栏 图标和文字同时出现
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1871, 937)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(30, 10, 101, 51))
font = QtGui.QFont()
font.setFamily("Agency FB")
font.setPointSize(16)
font.setBold(True)
...
self.toolBar = QtWidgets.QToolBar(MainWindow)
self.toolBar.setObjectName("toolBar")
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
self.actiondaoruchagn = QtWidgets.QAction(MainWindow)
...
self.toolBar.addAction(self.OpenAction)
self.toolBar.addAction(self.SaveAction)
self.toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) # 文字图片垂直排列
#toolbar.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) # 文字图片水平排列
pyqt布局(水平布局、垂直布局、网格布局)
pyqt 网格布局(Grid Layout)
-
拖拽控件
不想让这些按钮根据窗口的大小进行变化,在右侧找到mininumSize和maximumSize属性。点击其左面的箭头符号展开选项,将其宽和高固定为size。这样就不会因为缩放窗口而造成按钮的大小变化了。 -
在对所有按钮完成相应操作之后,我们选中按钮,点击右键,使用网格布局来实现布局。
sizePolicy 尺寸策略
在Qt Designer中,控件的尺寸是可以变化的。每个控件都拥有sizeHint和minisizeHint两个尺寸。其一,sizeHint即尺寸提示;其二,minisizeHint则是最小尺寸。尺寸提示也是控件的期望尺寸,最小尺寸即窗口可以被压缩到的最小的尺寸。sizePolicy与sizeHint和minisizeHint息息相关。
对于布局管理器中的布局无法满足我们的要求的时候,sizePolicy属性便派上了用场。
sizePolicy可以实现控件的微调。sizePolicy中共有如下几种水平和垂直策略。
pyqt 更改QtabWidget 选项卡的字体和颜色
1.更改选项卡字体
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "MainWindow"))
self.tabWidget.tabBar().setFont(QtGui.QFont("微软雅黑", 9))
2.更改选项卡颜色
self.tabWidget.tabBar().setTabTextColor(0,QColor(0,0,255))
self.tabWidget.tabBar().setTabTextColor(1,QColor(0,255,0))
self.tabWidget.tabBar().setTabTextColor(2,QColor(255,0,0))
pyqt 状态栏显示状态
QStatusBar方法
方法 | 描述 |
---|---|
addWidget() | 在状态栏中添加给定的窗口小控件对象 |
addPermanentWidget() | 在状态栏中永久添加给定的窗口小控件对象 |
showMessage() | 在状态栏显示一条临时信息,指定时间间隔 |
clearMessage() | 删除正在显示的临时信息 |
removeWidget() | 从状态栏中移除指定的小控件 |
import sys
from PyQt5.QtWidgets import *
class windows(QMainWindow):
def __init__(self, parent=None):
super(windows, self).__init__(parent)
self.initUi()
def initUi(self):
self.resize(500, 500)
self.status = self.statusBar()
self.status.showMessage('实时更新的信息', 0) #状态栏本身显示的信息 第二个参数是信息停留的时间,单位是毫秒,默认是0(0表示在下一个操作来临前一直显示)
self.comNum = QLabel('串口号:')
self.baudNum = QLabel('波特率:')
#这两句的stretch是设置拉伸因子
self.status.addPermanentWidget(self.comNum, stretch=0)
self.status.addPermanentWidget(self.baudNum, stretch=0)
#这里两个控件会按3:1的比例放置在状态栏里
self.status.addPermanentWidget(self.comNum, stretch=3)
self.status.addPermanentWidget(self.baudNum, stretch=1)
if __name__ == '__main__':
app = QApplication(sys.argv)
Win = windows()
Win.show()
sys.exit(app.exec_())
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
1.进度条等显示在主窗口状态栏的右端
from PyQt5.QtWidgets import QMainWindow, QProgressBar, QApplication, QLabel
import sys
class SampleBar(QMainWindow):
"""Main Application"""
def __init__(self, parent = None):
print('Starting the main Application')
super(SampleBar, self).__init__(parent)
self.initUI()
def initUI(self):
# Pre Params:
self.setMinimumSize(800, 600)
# File Menus & Status Bar:
self.statusBar().showMessage('准备中...')
self.progressBar = QProgressBar()
self.label = QLabel()
self.label2 = QLabel()
self.label.setText("正在计算: ")
self.label2.setText("正在计算: ")
self.statusBar().addPermanentWidget(self.label)
self.statusBar().addPermanentWidget(self.label2)
self.statusBar().addPermanentWidget(self.progressBar)
# self.statusBar().addWidget(self.progressBar)
# This is simply to show the bar
self.progressBar.setGeometry(0, 0, 100, 5)
self.progressBar.setRange(0, 500) # 设置进度条的范围
self.progressBar.setValue(100)
if __name__ == '__main__':
app = QApplication(sys.argv)
main2 = SampleBar()
main2.show()
sys.exit(app.exec_())
2.进度条等显示在主窗口状态栏的左端
from PyQt5.QtWidgets import QMainWindow, QProgressBar, QApplication, QLabel, \
QStatusBar, QPushButton
import sys
class SampleBar(QMainWindow):
"""Main Application"""
def __init__(self, parent = None):
# print('Starting the main Application')
super(SampleBar, self).__init__(parent)
self.initUI()
def initUI(self):
# Pre Params:
self.setMinimumSize(800, 600)
# File Menus & Status Bar:
self.statusBar = QStatusBar()
self.statusBar.setStyleSheet('QStatusBar::item {border: none;}')
self.setStatusBar(self.statusBar)
self.statusBar.showMessage('准备')
self.progressBar = QProgressBar()
self.pushbutton = QPushButton("点这里")
self.label = QLabel()
self.label2 = QLabel()
self.label.setText("开始计算 ")
self.label2.setText("正在计算: ")
# self.statusBar.addWidget(self.label, 0)
self.statusBar.addPermanentWidget(self.label, stretch=2)
self.statusBar.addPermanentWidget(self.label2, stretch=0)
self.statusBar.addPermanentWidget(self.progressBar, stretch=4)
# self.statusBar().addWidget(self.progressBar)
# This is simply to show the bar
# self.progressBar.setGeometry(0, 0, 100, 5)
self.progressBar.setRange(0, 500) # 设置进度条的范围
self.progressBar.setValue(20)
if __name__ == '__main__':
app = QApplication(sys.argv)
main2 = SampleBar()
main2.show()
sys.exit(app.exec_())
pyqt5BUG问题汇总
pyqt5导入qrc失败:ModuleNotFoundError: No module named ‘xx_rc‘
我们首先需要使用pyqt5 自带的 pyrcc5 将 qrc文件转化为 py文件
pyrcc5 *.qrc -o *.py
pyqt 标题图标显示不出来
1.图片格式的问题
一般我们使用做图标的图片格式为icon,所以我就对png格式进行转换,在线转换的网站有:
https://www.aconvert.com/cn/icon/png-to-ico/
https://convertio.co/zh/png-ico/
转换完毕之后,就变成icon格式了,把名字修改为*.ico
2.使用资源文件
- 创建qrc文件,写入以下内容:
<RCC>
<qresource prefix="/">
<file>favicon.ico</file>
</qresource>
</RCC>
- 生成py文件,这个py文件把图片保存成二进制:
pyrcc5 -o test.py images.qrc
- 导入模块,设置图标:
import qt
self.setWindowIcon(QtGui.QIcon("./qt.ico"))