PyQt5教程

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)

  1. 拖拽控件在这里插入图片描述
    不想让这些按钮根据窗口的大小进行变化,在右侧找到mininumSize和maximumSize属性。点击其左面的箭头符号展开选项,将其宽和高固定为size。这样就不会因为缩放窗口而造成按钮的大小变化了。在这里插入图片描述

  2. 在对所有按钮完成相应操作之后,我们选中按钮,点击右键,使用网格布局来实现布局。在这里插入图片描述
    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"))
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值