如何在QGridLayout中为隐藏的QtWaitingSpinner保留空间?

时间:2019-02-11 00:27:31

标签: python-3.x qt pyqt5 qgridlayout

我正在尝试构建一个使用QtWaitingSpinner的QtGui应用程序,该应用程序位于以下位置:https://github.com/z3ntu/QtWaitingSpinner。我在QGridLayout中。但是,这意味着当取消隐藏并启动微调器时,其旁边的按钮会更改大小。如何为网格中的微调框保留正确的空间大小,以使其旁边的按钮保持恒定大小,而不管是否显示微调框?

基于此stackoverflow帖子How to use spacers in Qt,我怀疑答案涉及QSpacerItem。但是,我不知道如何根据微调器所需的大小来调整QSpacerItem的大小。

这是显示我的问题的代码的最小示例:

import PyQt5.QtWidgets as QWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
from waitingspinnerwidget import QtWaitingSpinner
import sys

class Example_Window(QWidgets.QWidget):
    def __init__(self):
        super(QWidgets.QWidget,self).__init__()
        self.initUI()

    def initUI(self):
        self.button=QWidgets.QPushButton("Start/Stop Spinner")
        self.button.clicked.connect(self.toggle_spinner)
        self.spinner = QtWaitingSpinner(self,centerOnParent=False)
        self.grid = QWidgets.QGridLayout()
        self.grid.addWidget(self.button,0,0)
        self.grid.addWidget(self.spinner,0,1)
        self.setLayout(self.grid)
        self.show()

    def toggle_spinner(self):
        if self.spinner.isSpinning():
            self.spinner.stop()
        else:
            self.spinner.start()

if __name__ == '__main__':
    app = QWidgets.QApplication([])
    main = Example_Window()
    sys.exit(app.exec())    

1 个答案:

答案 0 :(得分:1)

尝试一下:

firebase

enter image description here