PyQt5“setContentsMargins”方法在选项卡小部件中无法正常工作(存在默认的9px边距)

2024-09-07 15:59:23 发布

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

我正在用PyQt5编写GUI,我意识到setContentsMargins方法在选项卡小部件中不能正常工作。在它的内部,每边都有一个9px的边距(参见所附的屏幕截图): enter image description here

下面是一个示例(在选项卡1中,我使用QVBoxLayout放置了一个带有的TreeView小部件):

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QTabWidget, QVBoxLayout, QTreeView

class App(QMainWindow):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 tabs'
        self.left = 0
        self.top = 0
        self.width = 300
        self.height = 200
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        
        self.table_widget = MyTableWidget(self)
        self.setCentralWidget(self.table_widget)
        
        self.show()
    
class MyTableWidget(QWidget):
    
    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
        self.layout = QVBoxLayout(self)

        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tabs.resize(300,200)

        self.tabs.addTab(self.tab1,"Tab 1")
        self.tabs.addTab(self.tab2,"Tab 2")

        self.tab1.layout = QVBoxLayout(self)
        self.TreeView=QTreeView()
        self.tab1.layout.addWidget(self.TreeView)
        self.tab1.setLayout(self.tab1.layout)
        
        self.tab1.setStyleSheet("background-color: red")
        self.tab1.setContentsMargins(-4, -4, -4, -4) # this instruction doesn't work! there is always a default margin (9px for each side)!

        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

正如您所看到的,如果我使用指令self.tab1.setContentsMargins(10, 10, 10, 10),所有的边距都将是19px(9+10),但是如果a想要5px呢?指令self.tab1.setContentsMargins(-4, -4, -4, -4)不起作用


Tags: importselfinit部件syspyqt5tab1选项卡
1条回答
网友
1楼 · 发布于 2024-09-07 15:59:23

额外的边距来自小部件的布局。将其设置为零或任何其他值:

self.tab1.layout.setContentsMargins(0, 0, 0, 0)

相关问题 更多 >