当前位置: 首页 > news >正文

PyQt 界面设置与布局:菜单栏、工具栏、主体、提示栏布局

文章目录

  • 一、菜单栏布局与事件绑定
    • 1.1 一级菜单栏
    • 1.2 多级菜单栏
    • 1.3 菜单栏属性
  • 二、工具栏布局
    • 2.1 工具栏布局(左中右布局)
    • 2.2 工具栏属性
  • 三、主体布局(水平、垂直、网格、嵌套)
    • 3.1 水平布局(QHBoxLayout)
    • 3.2 垂直布局(QVBoxLayout)
    • 3.3 网格布局(QGridLayout)
    • 3.4 嵌套布局(三种布局嵌套)
  • 四、状态栏
  • 五、界面布局
    • 5.1 大小策略(拉升时控件动态行为)
    • 5.2 空白间距
    • 5.3 拉伸因子(控件拉升空间分配)
    • 5.4 对齐方式(控件、布局)
    • 5.5 控件间距、边距、布局方向、布局比例

PyQt 提供了丰富的布局管理器和美化操作,可以帮助开发者轻松创建复杂的用户界面。通过合理使用布局管理器、拉伸因子、对齐方式、间距设置等功能,可以设计出美观且功能强大的应用程序界面。

一、菜单栏布局与事件绑定

1.1 一级菜单栏

# self为QMainWindow的窗口否则使用QMainWindow对应的对象MainWindw.menuBar()
self.MenuBar = MainWindw.menuBar()   # MainWindw.menuBar()
# File
self.FileMenu = self.MenuBar.addMenu("File")
# File -> Open
self.OpenFile = QAction("Open", self)
self.FileMenu.addAction(self.OpenFile)
# File -> Close
self.CloseFile = QAction("Close", self)
self.FileMenu.addAction(self.CloseFile)

1.2 多级菜单栏

self.MenuBar = MainWindw.menuBar()   # MainWindw.menuBar()
# File
self.SaveMenu = self.MenuBar.addMenu("File")
# File -> Save
self.SaveFile = self.SaveMenu.addMenu("Save")
# File -> Save -> Save txt
self.SaveTxt = QAction("Save txt", self)
self.SaveFile.addAction(self.SaveTxt)
# File -> Exit
self.Exit = QAction("Exit", self)
self.SaveMenu.addAction(self.Exit)

1.3 菜单栏属性

self.MenuBar = MainWindw.menuBar()   # MainWindw.menuBar()
# 设置菜单栏宽度
self.MenuBar.setStyleSheet("QMenuBar {width: 100px;}")
# 获取菜单
for action in self.MenuBar.actions():
    print(action.text())
    
self.FileMenu = self.MenuBar.addMenu("File")
self.Close = QAction("Close", self)
# 菜单栏事件绑定
self.Close.triggered.connect(self.close)
# 设置图标
self.Close.setIcon("icon.png")
# 添加快捷键
self.Close.setShortcut("Ctrl+S")
# 设置字体
font = QtGui.QFont('Arial', 10)
self.Close.setFont(font)
# 设置气泡
self.Close.setToolTip("Close")
self.FileMenu.addAction(self.Close)

实例

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QAction


# UI代码
class Ui_Form(object):
    def setupUi(self, MainWindw):
        MainWindw.setObjectName("Form")
        MainWindw.resize(300, 200)

        self.MenuBar = MainWindw.menuBar()
        # 一级菜单栏
        self.FileMenu = self.MenuBar.addMenu("File")
        self.OpenFile = QAction("Open", self)
        self.FileMenu.addAction(self.OpenFile)
        self.FileMenu.addSeparator()     # 添加分隔线
        self.CloseFile = QAction("Close", self)
        self.FileMenu.addAction(self.CloseFile)
        # 多层菜单栏
        self.SaveMenu = self.MenuBar.addMenu("Save")   # 菜单栏
        self.SaveFile = self.SaveMenu.addMenu("Save")  # 一级菜单栏
        self.SaveTxt = QAction("Save txt", self)       # 二级菜单栏
        self.SaveFile.addAction(self

相关文章:

  • R与RStudio简介及安装
  • CF 14B.Young Photographer(Java实现)
  • 遗传算法初探
  • 5. 最长回文子串
  • Qt学习 网络编程 TPC通信
  • springcloud整合seata
  • 华为 网络安全 认证
  • redis-性能下降的原因排查
  • 基于SpringBoot的二手交易系统
  • openharmony中hdf框架的驱动消息机制的实现原理
  • 常见的“锁”有哪些?
  • (200): error: #29: expected an expression error: #40: expected an identifier
  • 一周学会Flask3 Python Web开发-Jinja2模板基本使用
  • 福禄抽-测试报告
  • ASP.NET MVC 下载文件
  • Android移动应用开发实践-1-下载安装和简单使用Android Studio 3.5.2版本(频频出错)
  • Oracle中补全时间的处理
  • 计算机毕业设计SpringBoot+Vue.js教师工作量管理系统(源码+LW文档+PPT+讲解)
  • 本地部署AI模型 --- DeepSeek(二)---更新中
  • Keepalive基础
  • 提出网络营销思想的网站改版计划/谷歌优化培训
  • 微信分享网站短链接怎么做/最新引流推广方法
  • 俄罗斯网站域名注册/seo建站技巧
  • 长安公司网站设计/足球直播在线直播观看免费cctv5
  • 佛山做外贸网站的公司吗/漳州seo网站快速排名
  • 鲜花品牌网站建设/竞价托管公司排名