如何删除标签之间的空格?

问题描述 投票:0回答:1

我想删除标签之间的空格。 标签的范围数量为 1 到 5,并在循环中使用(从数据库获取的文本)

我使用了 varios 选项,但一切都失败了 (.setAlignment/.setMargin~~~~)

我用谷歌搜索了很多文档,但找不到任何解决方案。

我该怎么办?

result picture of code... click here

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

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # self.setGeometry(-1700, -300, 1500, 800)
        self.setGeometry(  500, 200, 500, 200)

        self.tableWidget = QTableWidget(self)
        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.tableWidget.resize(1000, 1000)
        self.tableWidget.verticalHeader().setVisible(False)
        self.tableWidget.setColumnCount(2)
        self.tableWidget.setRowCount(3)
        # self.tableWidget.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
        
        column_labels = ["column1", "column2"]
        self.tableWidget.setHorizontalHeaderLabels(column_labels)
        self.tableWidget.setItem(0, 0, QTableWidgetItem("test1"))
        self.tableWidget.setItem(0, 1, QTableWidgetItem("63,900"))

        layout = QHBoxLayout(self)
        QFont('Arial', 10)
        label1 = QLabel("             ")
        label1.setFont(QFont('Arial', 20))
        label1.resize(200, 100)
        label1.setStyleSheet("QLabel { background-color : red; color : black;}")

        label2 = QLabel("            ")
        label2.setStyleSheet("QLabel { background-color : blue; color : blue; padding:0}")
        
        label3 = QLabel("            ")
        label3.setStyleSheet("QLabel { background-color : lightgreen; color : blue; padding:0}")
        
        
        layout.setContentsMargins(0,0,0,0)
        layout.addWidget(label1)
        layout.addWidget(label2)
        layout.addWidget(label3)
        layout.addStretch(1)

        self.title = QLabel("97%")
        # self.title.setMargin(0)

        f = QFrame()
        f.setLayout(layout)
        f.setContentsMargins(0,0,0,0)
        self.tableWidget.setCellWidget(0, 1, f )
        self.tableWidget.setColumnWidth(1, 300)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mywindow = MyWindow()
    mywindow.show()
    app.exec_()
python label qt5 space pythonqt
1个回答
0
投票

需要通过setSpacing(0)设置标签的间距。此代码有效:

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

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setGeometry(500, 200, 500, 200)

        self.tableWidget = QTableWidget(self)
        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.tableWidget.resize(1000, 1000)
        self.tableWidget.verticalHeader().setVisible(False)
        self.tableWidget.setColumnCount(2)
        self.tableWidget.setRowCount(3)
        
        column_labels = ["column1", "column2"]
        self.tableWidget.setHorizontalHeaderLabels(column_labels)
        self.tableWidget.setItem(0, 0, QTableWidgetItem("test1"))
        self.tableWidget.setItem(0, 1, QTableWidgetItem("63,900"))

        layout = QHBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)  # Set spacing to zero to remove space between labels

        label1 = QLabel("             ")
        label1.setFont(QFont('Arial', 20))
        label1.setStyleSheet("QLabel { background-color : red; color : black;}")
        layout.addWidget(label1)

        label2 = QLabel("            ")
        label2.setStyleSheet("QLabel { background-color : blue; color : blue;}")
        layout.addWidget(label2)
        
        label3 = QLabel("            ")
        label3.setStyleSheet("QLabel { background-color : lightgreen; color : blue;}")
        layout.addWidget(label3)

        f = QFrame()
        f.setLayout(layout)
        self.tableWidget.setCellWidget(0, 1, f)
        self.tableWidget.setColumnWidth(1, 300)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mywindow = MyWindow()
    mywindow.show()
    app.exec_()
© www.soinside.com 2019 - 2024. All rights reserved.