PyQt5:在布局中添加QWidget,在添加间隔符时不显示QWidget

2024-09-30 20:34:07 发布

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

编辑:我尝试了更多的方法。如果我把间隔区移到我要添加到的间隔区下面的布局中,则不会出现相同的行为。它仍然不是最佳的,也不会起作用,因为我的最终目标是有一个滚动区,里面有一个间隔区,我可以添加我的小部件,但这看起来不太合适。我认为问题是这些小部件的尺寸正在变小,我只是不知道为什么或如何修复它。在

我有两个用QtDesigner制作的ui文件。第一个文件是我的主窗口,在程序开始时,我加载第二个ui文件,并将其放在第一个文件中间的一个垂直间隔中。每次单击按钮时都会放置其他副本。在

这一切都很好,直到我添加了一个垂直间隔,以推动项目的顶部。我已经厌倦了从设计器和代码中添加它。两者的结果相同。在

我在谷歌上看了不少,也尝试了很多建议。在

我尝试将第二个ui文件的父级设置为Qwidget,我添加到第一个包含垂直布局的部件上。在

我试着为不同的东西设置最小尺寸和尺寸策略。在

以下是我目前的代码,任何想法或建议将不胜感激!在

#!python3
import sys
from PyQt5 import QtWidgets, QtCore, uic

class TimesheetWidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(TimesheetWidget, self).__init__(parent)
        self.parent = parent
        self.tableRows = dict()

    def setup(self):
        self.labelSaved.hide()
        self.addTableRow()

    def addTableRow(self):
        thisRow = len(self.tableRows)
        self.tableRows[thisRow] = uic.loadUi("gui/tableRow.ui")
        self.tableRows[thisRow].addButton.clicked.connect(self.addTableRow)
        self.spacer.addWidget(self.tableRows[thisRow])

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    timesheet = TimesheetWidget()
    Mytimesheet = uic.loadUi("gui/timesheet.ui", baseinstance=timesheet)
    Mytimesheet.setup()
    Mytimesheet.show()

    sys.exit(app.exec_())

以下是指向ui文件的链接(它们将很长时间才能发布): gist link for ui files


Tags: 文件selfui间隔部件尺寸defsys
1条回答
网友
1楼 · 发布于 2024-09-30 20:34:07

我最终通过反复尝试一些随机的东西来解决这个问题,直到某个东西起作用。在

结果发现,在我的第二个ui文件中,我没有顶层布局。(我不确定这是否是它的名称。)

尽管我选择了水平布局,我还是选择了水平布局。在

下面是一张图片,上面显示了带有取消符号的顶级小部件。有一次我添加了一个布局,它消失了,一切正常!在

enter image description here

相关问题 更多 >