PyQt:如何设置窗口大小以匹配控件大小?

2024-09-30 01:32:01 发布

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

我正在编写一个pyqt应用程序,其中有一个菜单和一个中央小部件(一个具有行和列的表小部件,看起来像一个电子表格)。我想将封闭窗口的大小设置为小部件的大小。我不想因为美学的原因把它固定在某个尺寸上,浪费边界周围的空间。如何提取表小部件的总宽度?我试着用tabeleWidget.width选项卡()但这给了我一个细胞的宽度。我使用的是pyqt4和python2.7。在


Tags: 应用程序宽度部件尺寸菜单浪费空间原因
1条回答
网友
1楼 · 发布于 2024-09-30 01:32:01

我不确定是否有一个简单的方法来计算桌子的大小,但是像这样的东西怎么样?在

from PyQt4 import QtCore, QtGui

class MainWindow(QtGui.QMainWindow):
    def __init__(self, table_rows, table_cols, **kwargs):
        super(MainWindow, self).__init__(**kwargs)
        self.table = QtGui.QTableWidget(table_rows, table_cols)
        self.table.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.table.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.table.verticalHeader().sectionResized.connect(self.fitToTable)
        self.table.horizontalHeader().sectionResized.connect(self.fitToTable)
        self.setCentralWidget(self.table)
        self.fitToTable()

    @QtCore.pyqtSlot()
    def fitToTable(self):
        x = self.table.verticalHeader().size().width()
        for i in range(self.table.columnCount()):
            x += self.table.columnWidth(i)

        y = self.table.horizontalHeader().size().height()
        for i in range(self.table.rowCount()):
            y += self.table.rowHeight(i)

        self.setFixedSize(x, y)


if __name__ == '__main__':
    app = QtGui.QApplication([])
    win = MainWindow(4, 5)
    win.show()
    app.exec_()

此示例计算表的大小并将窗口大小固定为这些值。如果用户手动调整任何行或列的大小,它还会调整窗口的大小以适应。在

相关问题 更多 >

    热门问题