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

时间:2016-08-31 21:34:27

标签: python pyqt5

编辑:我还尝试了一些其他内容。如果我将垫片移动到垫片下方的布局中,我将其添加到它中并不表示同样的确切行为。它仍然不是最优的,并且不会起作用,因为我的最终目标是在我添加我的小部件的内部有一个带有spacer的scrollArea,但这看起来不对。我认为问题是小部件的大小为零我只是不知道为什么或如何解决它。

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

这一切都很有效,直到我添加一个垂直垫片将物品推到顶部。我已经厌倦了从Designer和代码中添加它。两者都有相同的结果。

我在谷歌上看了很多,并尝试了很多建议。

我尝试将第二个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

1 个答案:

答案 0 :(得分:0)

我终于通过一遍又一遍地尝试随机的东西来解决这个问题。

事实证明,在我的第二个ui文件中,我没有顶级布局。 (我不确定这是不是所谓的。)

要解决此问题,我右键单击顶级窗口小部件并选择布局和选择的水平布局,但我认为任何工作都可以。

这是一张图片,显示顶部小部件,上面有取消符号。一旦我添加了去掉的布局,一切正常!

enter image description here