PyQt:同一行上的多个标签

时间:2017-05-17 08:30:16

标签: layout pyqt5

我试图创建一个简单的布局组件,其中有一个文本,后跟计数器。理想情况下,它看起来像下面图片中的第一个例子,但它看起来像第二个例子:

enter image description here

数字是依赖于用户选择或进度的变量,因此我的代码中有自己的变量,整行由四个不同的QLabel小部件组成:一个用于文本,一个用于每个计数器,一个用于斜杠。但由于某些原因,这些标签占用了大量空间,我将第一个标签的背景颜色设置为红色以说明问题。

我应该如何实现这一点,以便获得第一个示例的结果,但我可以单独控制这些计数器?我试图改变利润率,规模政策等,但似乎没有任何工作正常。

这是当前的实施:

    progress_line = QHBoxLayout()
    label = QLabel('Example label:')
    progress_line.addWidget(label)
    progress_line.addWidget(self.progress_count_current)
    progress_line.addWidget(QLabel('/'))
    progress_line.addWidget(self.progress_count_total)

    # Add to other layout
    parent.addLayout(progress_line)

1 个答案:

答案 0 :(得分:0)

我无法查看代码中的问题,因为您没有显示所有内容,我不知道什么类型的对象是" self.progress_count_current&#34 ;和" self.progress_count_total"。但我有这个小例子似乎做你需要的。试一试,看看它是否有效。

import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QHBoxLayout
from PyQt5.QtWidgets import QLabel
from PyQt5.QtWidgets import QWidget


class Widget(QWidget):

    def __init__(self):
        super(Widget, self).__init__()

        self.h_layout = QHBoxLayout()
        self.setLayout(self.h_layout)

        self.label = QLabel('Example label:')
        self.current_value = '1'
        self.total_value = '3'

        self.label_current = QLabel(self.current_value)
        self.slash_label = QLabel('/')
        self.label_total = QLabel(self.total_value)

        self.h_layout.addWidget(self.label)
        self.h_layout.addWidget(self.label_current)
        self.h_layout.addWidget(self.slash_label)
        self.h_layout.addWidget(self.label_total)


if __name__=="__main__":
    app = QApplication(sys.argv)
    mw = Widget()
    mw.show()
    sys.exit(app.exec_())