扩展大小的窗口

Pyside6扩展大小的窗口
请添加图片描述

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QVBoxLayout, QFrame
from PySide6.QtCore import Qt, QRect
from PySide6.QtGui import QColor, QPainter, QPen

# 侧边栏类,继承自QFrame
# 用于创建一个无边框的固定宽度侧边栏
class SideBar(QFrame):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setFixedWidth(300)
        self.setFrameStyle(QFrame.NoFrame)
        self.setAttribute(Qt.WidgetAttribute.WA_StyledBackground, True)
        self.setStyleSheet("background-color: white; border: 2px dashed green;")
        layout = QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)






# 主窗口类,继承自QMainWindow
# 用于创建主应用程序窗口,包含侧边栏和按钮  # self.setGeometry(100, 100, 600, 400)
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        global screen_rect
        self.setWindowTitle('Sidebar Example')
        # 计算屏幕分辨率
        screen_rect = QApplication.primaryScreen().availableGeometry()
        # 根据屏幕分辨率计算主窗口位置设置在屏幕中间
        self.setGeometry((screen_rect.width() - 600) // 2,(screen_rect.height() - 400) // 2,600,400)
        # 设置Qmainwindow主窗口的背景色54, 54, 54
        self.setStyleSheet("background-color: rgb(54, 54, 54);")



        # 初始化侧边栏,并设置其位置和初始隐藏状态
        self.sidebar = SideBar(self)
        self.sidebar.move(300, 0)
        # 设置侧边栏宽为700
        self.sidebar.setFixedWidth(700)
        self.sidebar.hide()

        # 创建三个按钮,并设置其位置
        button1 = QPushButton('Button 1', self)
        button2 = QPushButton('Button 2', self)
        button3 = QPushButton('Button 3', self)
        button1.move(10, 10)
        button2.move(10, 60)
        button3.move(10, 110)

        # 绑定按钮点击事件,点击任意按钮都会切换侧边栏的显示状态
        button1.clicked.connect(self.toggle_sidebar)
        button2.clicked.connect(self.toggle_sidebar)
        button3.clicked.connect(self.toggle_sidebar)

    # 切换侧边栏的显示状态的函数
    # 当侧边栏可见时,隐藏侧边栏并调整主窗口大小
    # 当侧边栏不可见时,显示侧边栏并调整主窗口大小
    def toggle_sidebar(self):
        if self.sidebar.isVisible():
            self.sidebar.hide()
            self.setGeometry((screen_rect.width() - 600) // 2,(screen_rect.height() - 400) // 2,600,400)
        else:
            self.sidebar.show()
            self.setGeometry((screen_rect.width() - 1000) // 2,(screen_rect.height() - 600) // 2,1000,600)

# 程序入口点
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值