繁体   English   中英

PySide2 - 设置/删除小部件之间的间距

[英]PySide2 - Set/Remove spacing between widgets

我有这个生成 window 的 PySide2 代码,如图所示

QLabel 和 QPushButton 之间有一些不需要的空间,我试图减少这些空间。 我试过 setSpacing 和 setMargin 似乎不起作用。 我错过了一些明显的东西吗? 这是代码...

import sys
from PySide2.QtWidgets import *
from PySide2 import *
from PySide2.QtCore import *
from PySide2.QtGui import *


class ToolBar(QWidget):
   def __init__(self):
       super(ToolBar, self).__init__()
       self.setFixedHeight(22)

       tb_bg = QWidget()
       tb_bg.setStyleSheet("background: rgb(100, 100, 100);")

       tb_layout = QHBoxLayout()
       tb_layout.setMargin(0)
       tb_layout.setSpacing(0)
       tb_layout.addWidget(tb_bg)
       self.setLayout(tb_layout)


class MainPanel(QWidget):
   def __init__(self):
      super(MainPanel, self).__init__()

       default_page = QWidget()
    default_page.setStyleSheet("background: rgb(220, 220, 220)")

    default_msg = QLabel()
    default_msg.setText("You have no reminders or to-dos, "
                        "click the button below or click the fluid button "
                        "in the toolbar to add new to-dos or reminders.")
    default_msg.setFixedSize(200, 100)
    default_msg.setWordWrap(True)
         default_msg.setStyleSheet("background: none;"
                              "color: rgb(120, 120, 120);"
                              "font-size: 12px;"
                              "margin: 0;"
                              "padding: 0;"
                              "border: 0;")
    default_button = QPushButton()
    default_button.setFixedSize(120, 120)
    default_button.setFlat(True)
    default_button.setText("+")
    default_button.setToolTipDuration(7000)
    default_button.setToolTip("Add new to-do or reminder...")
    default_button.setStyleSheet("QPushButton{"
                                 "border: 1px solid rgb(170, 170, 170);"
                                 "margin:0;"
                                 "padding: 0;"
                                 "border-radius: 10px;"
                                 "color: rgb(140, 140, 140);"
                                 "font-size: 40px;}"
                                 "QPushButton:hover{"
                                 "border: 2px solid rgb(250, 250, 250);"
                                 "background: rgb(250, 250, 250);"
                                 "color: rgb(80, 80, 80);"
                                 "font-size: 50px;}"
                                 "QPushButton:pressed{"
                                 "border: 3px solid rgb(250, 250, 250);"
                                 "border-radius: 10px;"
                                 "color: rgb(80, 80, 80);"
                                 "font-size: 40px;}")
      default_page_layout = QVBoxLayout()
    default_page_layout.addWidget(default_msg)
    default_page_layout.setAlignment(default_msg, Qt.AlignCenter)
    default_page_layout.addWidget(default_button)
    default_page_layout.setAlignment(default_button, Qt.AlignCenter)
    default_page_layout.setSpacing(0)
    default_page_layout.setMargin(0)
    default_page_layout.setContentsMargins(0, 0, 0, 0)
    default_page.setLayout(default_page_layout)

    mp_layout = QHBoxLayout()
    mp_layout.addWidget(default_page)
    mp_layout.setMargin(0)
    mp_layout.setSpacing(0)
    mp_layout.setContentsMargins(0, 0, 0, 0)
    self.setLayout(mp_layout)


class MainWindow(QWidget):
   def __init__(self):
    super(MainWindow, self).__init__()
    self.resize(600, 500)

    toolbar = ToolBar()
    mainpanel = MainPanel()

    mw_layout = QVBoxLayout()
    mw_layout.setMargin(0)
    mw_layout.setSpacing(0)
    mw_layout.addWidget(toolbar)
    mw_layout.addWidget(mainpanel)
    self.setLayout(mw_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = MainWindow()
    MainWindow.show()
    sys.exit(app.exec_())

请忽略复制粘贴时发生的不正确的缩进。

default_page_layout = QVBoxLayout()
default_page_layout.setAlignment(QtCore.Qt.AlignVCenter)

如果您愿意,您当然可以不在中心对齐。 您可以使用“|”添加不同的对齐方式:

default_page_layout = QVBoxLayout()
default_page_layout.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignLeft)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM