使用pyqt编写的页面导航框架

server/2024/12/22 20:03:58/

使用pyqt编写的页面导航框架

    • 效果
  • 介绍
  • 代码

效果

在这里插入图片描述
在这里插入图片描述

介绍

使用pyqt多种控件编写的导航框架,左边是菜单栏,点击不同的菜单选项可以切换到不同的页面。

代码

python">import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QStackedWidget, QLabel, \QSpacerItem, QSizePolicy
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtGui import QFontclass MainWindow(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 创建主垂直布局main_layout = QVBoxLayout(self)main_layout.setContentsMargins(0, 0, 0, 0)  # 设置布局的四个间距都为0self.resize(1000, 860)# 创建第一个QWidget,背景色为绿色,固定高度为60top_widget = QWidget()top_widget.setStyleSheet("background-color:#000000;")top_widget.setFixedHeight(60)# 创建一个横向布局h_layout = QHBoxLayout()# 创建图片标签并添加到横向布局image_label = QLabel()# 假设你有一个图片路径# 加载图片并调整其大小为64x64pixmap = QPixmap('img.png')scaled_pixmap = pixmap.scaled(64, 64, Qt.KeepAspectRatio, Qt.SmoothTransformation)image_label.setPixmap(scaled_pixmap)h_layout.addWidget(image_label)h_layout.setSpacing(20)# 创建文本标签并添加到横向布局text_label = QLabel("欢迎使用ADC!")text_label.setStyleSheet("QLabel { color: white; }")h_layout.addWidget(text_label)# 创建一个压缩空间控件并添加到横向布局# 使用QSizePolicy.Expanding作为策略可以使空间尽可能地被压缩spacer_item = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)h_layout.addItem(spacer_item)# 将横向布局设置为top_widget的布局top_widget.setLayout(h_layout)# 添加到主布局main_layout.addWidget(top_widget)# 创建第二个QWidget,用于包含win1和win2的QHBoxLayoutsecond_widget = QWidget()second_layout = QHBoxLayout(second_widget)# 创建win1,固定宽度为60win1 = QWidget()win1.setFixedWidth(90)win1.setStyleSheet("background-color: #000000;")# 创建两个按钮button1 = QPushButton("界面1", win1)button2 = QPushButton("界面2", win1)# 设置字体样式font = QFont('微软雅黑', 12, QFont.Bold)  # 字体名称、大小、加粗button1.setFont(font)button2.setFont(font)text_label.setFont(font)button1.setStyleSheet("QPushButton { color: white; }")button2.setStyleSheet("QPushButton { color: white; }")spacer_item2 = QSpacerItem(40, 20, QSizePolicy.Minimum,QSizePolicy.Expanding)# 垂直布局用于放置按钮button_layout = QVBoxLayout(win1)button_layout.addWidget(button1)button_layout.addWidget(button2)button_layout.addItem(spacer_item2)button_layout.setSpacing(20)# 将win1添加到水平布局second_layout.addWidget(win1)# 创建win2的QStackedWidgetwin2 = QStackedWidget()win2.setStyleSheet("background-color: #ffffff;")# 创建两个界面,这里用QLabel代替其他复杂界面label1 = QLabel("这是界面1的内容", win2)label2 = QLabel("这是界面2的内容", win2)# 将界面添加到堆叠控件win2.addWidget(label1)win2.addWidget(label2)# 将win2添加到水平布局second_layout.addWidget(win2)# 将第二个QWidget添加到主布局main_layout.addWidget(second_widget)# 连接按钮信号到槽函数button1.clicked.connect(lambda: win2.setCurrentIndex(0))button2.clicked.connect(lambda: win2.setCurrentIndex(1))main_layout.setSpacing(0)second_layout.setSpacing(0)second_layout.setContentsMargins(0, 0, 0, 0)# 设置窗口属性self.setWindowTitle('导航框架')self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = MainWindow()sys.exit(app.exec_())

http://www.ppmy.cn/server/23669.html

相关文章

数据整合与 IT 自动化:工业企业的转型之路

随着信息技术的快速发展,工业企业正面临着数字化转型的挑战和机遇。数据整合和IT自动化成为了工业企业实现高效运营和持续创新的关键。本文将探讨数据整合和IT自动化在工业企业转型中的重要性,并提供一些实践建议。 引言: 在数字化时代&…

【LeetCode刷题记录】简单篇-70-爬楼梯

【题目描述】 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 【测试用例】 示例1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1.1阶 1阶…

centos上网卡突然找不到了

问题 今天登录centos突然发现ssh连接不上,在虚拟机中输入ifconfig才发现没有找到对应的网卡ens33了 解决 只需要输入两行命令就可以解决 禁用NetworkManager systemctl stop NetworkManagersystemctl disable NetworkManager 然后重启网络systemctl start netwo…

Ajax 笔记 01

01 ajax的基本使用 ajax五步骤: 1.构建异步请求对象 2.调用open方法 传入请求方式 服务器地址等参数 3.调用send方法 发起网络请求 4.注册请求对象的状态改变事件 5.在状态改变事件里面 判断当前状态 并取得返回值 02 get方式向服务器发送数据 ajax的get方式向服务器提交数据: …

Impala系统架构理解

1 impalad(含3个模块,执行hbase或hdfs中的数据,数据的底层存储为hdfs) 当用户通过用户接口提出查询或分析请求时,Impala会选择一个Impalad实例作为协调者(Coordinator)来负责整个查询过程的协调…

Go语言实战:构建高性能Web应用

Go语言(又称为Golang)因其简洁、高效和强大的并发特性而被广泛用于构建高性能的Web应用。下面是使用Go语言构建一个高性能Web应用的基本步骤,包括环境设置、Web框架选择、实现RESTful API、数据库连接和性能优化。 ### 1. 环境设置 首先&am…

java: java.lang.OutOfMemoryError: Java heap space报错解决办法

报错原因: Java 虚拟机(JVM)中的堆内存区域不足,无法为新对象分配空间。这通常发生在应用程序创建了大量对象,并且垃圾收集器无法释放足够的内存,使得堆空间耗尽。 解决办法:文件 ——> 设…

【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ①

在android系统中fence用于不同模块需要访问同一块buffer的同步,例如camera和graphic。对于preview buffer, camera是生产者graphic是消费者。 camera需要生产图像数据到preview buffer时需要等待preview buffer的 fence可用。 camera sync是高通camx框架里面用于各个…