如何设置QVboxLayout的宽度

2024-06-16 09:59:22 发布

您现在位置:Python中文网/ 问答频道 /正文

import sys
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import QApplication,QDialog,QPushButton,QVBoxLayout,QWidget


class Main(QDialog):
    def __init__(self):
        super(Main, self).__init__()
        self.ui()

    # Group Of Drage Event
    def mousePressEvent(self,event):
        self.offset = event.pos()

    def mouseMoveEvent(self, e):
        x = e.globalX()
        y = e.globalY()
        x_w = self.offset.x()
        y_w = self.offset.y()
        self.move(x - x_w, y - y_w)

    def ui(self):
        # TitleBar
        self.setWindowFlags(Qt.FramelessWindowHint)

        # Window Size
        self.setGeometry(600,300,400,500)

        # Window Background Color
        self.BackGroundColor = QPalette()
        self.BackGroundColor.setColor(QPalette.Background, QColor(255,255,255))
        self.setPalette(self.BackGroundColor)

        # NavBar Button
        self.btn = QPushButton('Test',self)
        self.btn1 = QPushButton("Test1",self)

        # NavBar Layout
        self.layout = QVBoxLayout(self)
        self.layout.addWidget(self.btn)
        self.layout.addWidget(self.btn1)
        self.layout.set
        self.setLayout(self.layout)

        # Close img
        self.closeBtn = QPushButton(self)
        self.closeBtn.setGeometry(368,0,32,32)
        self.closeBtn.setFlat(True)
        self.closeBtn.setStyleSheet('QPushButton{background-color: rgba(0,0,0,0.0)}')
        self.closeBtn.setIcon(QIcon('img/close.png'))
        self.closeBtn.setIconSize(QSize(10,10))
        self.closeBtn.clicked.connect(QCoreApplication.instance().quit)

        # Maximize icon
        self.maxBtn = QPushButton(self)
        self.maxBtn.setGeometry(self,336,0,32,32)
        self.maxBtn.setFlat(True)
        self.maxBtn.setStyleSheet('QPushButton{background-color: rgba(0,0,0,0.0)}')
        self.maxBtn.setIcon(QIcon('img/max.png'))
        self.maxBtn.setIconSize(QSize(14,14))

        # Minimize Incon
        self.minBtn = QPushButton(self)
        self.minBtn.setGeometry(304,0,32,32)
        self.minBtn.setFlat(True)
        self.minBtn.setStyleSheet('QPushButton{background-color: rgba(0,0,0,0.0)}')
        self.minBtn.setIcon(QIcon('img/min.png'))
        self.minBtn.setIconSize(QSize(10,10))


def main():
    app = QApplication()
    win = Main()
    win.show()
    app.exec_()

if __name__ == "__main__":
    main()

我想把导航条固定在左边。所以,我创建了QVBoxLayout的实例,并将小部件添加到我的布局中。我搜索了谷歌,stackoverflow。我没有得到任何关于我问题的信息

但我不知道如何设置布局小部件。请教我。多谢各位

如果你不明白我的文字,请告诉我,我会描述

版本:

  • PySide 5.14.2.1
  • Python 3.7.7

Tags: fromimportselfimgmaindefoffsetlayout
1条回答
网友
1楼 · 发布于 2024-06-16 09:59:22

布局不是视觉元素,因此它们没有任何与之关联的几何元素,例如宽度大小,布局是大小和位置的控制柄

在这种情况下,解决方案是建立一个具有固定大小的容器,并在该容器中借助布局放置按钮:

class Main(QDialog):
    def __init__(self):
        super(Main, self).__init__()
        self.ui()

    # Group Of Drage Event
    def mousePressEvent(self, event):
        self.offset = event.pos()

    def mouseMoveEvent(self, e):
        x = e.globalX()
        y = e.globalY()
        x_w = self.offset.x()
        y_w = self.offset.y()
        self.move(x - x_w, y - y_w)

    def ui(self):
        # TitleBar
        self.setWindowFlags(Qt.FramelessWindowHint)

        # Window Size
        self.setGeometry(600, 300, 400, 500)

        # Window Background Color
        self.BackGroundColor = QPalette()
        self.BackGroundColor.setColor(QPalette.Background, QColor(255, 255, 255))
        self.setPalette(self.BackGroundColor)

        # NavBar Button
        self.btn = QPushButton("Test")
        self.btn1 = QPushButton("Test1")

        left_container = QWidget(self)
        left_container.setFixedWidth(100)
        # NavBar layout
        self.layout = QVBoxLayout(left_container)
        self.layout.addWidget(self.btn)
        self.layout.addWidget(self.btn1)

        hlay = QHBoxLayout(self)
        hlay.addWidget(left_container)
        hlay.addStretch()

        # Close img
        self.closeBtn = QPushButton(self)
        self.closeBtn.setGeometry(368, 0, 32, 32)
        self.closeBtn.setFlat(True)
        self.closeBtn.setStyleSheet("QPushButton{background-color: rgba(0,0,0,0.0)}")
        self.closeBtn.setIcon(QIcon("img/close.png"))
        self.closeBtn.setIconSize(QSize(10, 10))
        self.closeBtn.clicked.connect(QCoreApplication.instance().quit)

        # Maximize icon
        self.maxBtn = QPushButton(self)
        self.maxBtn.setGeometry(336, 0, 32, 32)
        self.maxBtn.setFlat(True)
        self.maxBtn.setStyleSheet("QPushButton{background-color: rgba(0,0,0,0.0)}")
        self.maxBtn.setIcon(QIcon("img/max.png"))
        self.maxBtn.setIconSize(QSize(14, 14))

        # Minimize Incon
        self.minBtn = QPushButton(self)
        self.minBtn.setGeometry(304, 0, 32, 32)
        self.minBtn.setFlat(True)
        self.minBtn.setStyleSheet("QPushButton{background-color: rgba(0,0,0,0.0)}")
        self.minBtn.setIcon(QIcon("img/min.png"))
        self.minBtn.setIconSize(QSize(10, 10))

相关问题 更多 >