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())