[英]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.