J'ai un problème ennuyeux ici, et j'apprécierais que quelqu'un puisse me donner un aperçu de ce que je fais de mal.Besoin d'aide avec PyQt et QGridLayout
J'ai une application PyQt censée afficher une table de nombres. Donc, naturellement, j'utilise QTableWidget. En ce moment, c'est extrêmement simple: tout ce que je fais est de créer une fenêtre avec un widget de table et un bouton et de l'afficher. Je ne suis pas encore en train de peupler la table. Je veux que la table puisse être redimensionnée automatiquement avec la fenêtre, et éventuellement je vais ajouter d'autres widgets à ce formulaire, donc j'utilise QGridLayout. Et quand je prévisualiser le formulaire dans Qt Designer, il semble et se comporte correctement. La table prend tout le formulaire à l'exception de l'espace utilisé par le bouton, et quand je redimensionne la fenêtre, ils sont tous deux correctement redimensionnés avec lui. Mais quand j'essaye d'exécuter le code Python généré, tout est foutu. Le widget de tableau et le bouton sont tous deux regroupés les uns sur les autres dans le coin supérieur gauche de la fenêtre.
J'ai créé le fichier .ui à l'aide de Qt Designer 4 et généré le code Python à l'aide de pyuic4. Je n'ai pas édité l'un des fichiers manuellement du tout. Donc, je suppose qu'il n'y a pas d'erreurs de syntaxe de base dans l'un ou l'autre. Ma conjecture est que je suis en quelque sorte mal compris la relation entre les widgets, la fenêtre et le gestionnaire de mise en page. Mais je ne peux pas comprendre comment.
Voici le code pour mon fichier .ui:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TableWindow</class>
<widget class="QWidget" name="TableWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>586</width>
<height>383</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string/>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="btnSave">
<property name="text">
<string>Save to File</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
Et voici le code Python généré à partir du fichier .ui par pyuic4:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file
'ui_table_window.ui'
#
# Created: Mon Apr 19 23:47:43 2010
# by: PyQt4 UI code generator 4.6
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
class Ui_TableWindow(object):
def setupUi(self, TableWindow):
TableWindow.setObjectName("TableWindow")
TableWindow.resize(586, 383)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(TableWindow.sizePolicy().hasHeightForWidth())
TableWindow.setSizePolicy(sizePolicy)
self.gridLayout = QtGui.QGridLayout(TableWindow)
self.gridLayout.setObjectName("gridLayout")
self.tableWidget = QtGui.QTableWidget(TableWindow)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(0)
self.tableWidget.setRowCount(0)
self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1)
self.btnSave = QtGui.QPushButton(TableWindow)
self.btnSave.setObjectName("btnSave")
self.gridLayout.addWidget(self.btnSave, 1, 0, 1, 1)
self.retranslateUi(TableWindow)
QtCore.QMetaObject.connectSlotsByName(TableWindow)
def retranslateUi(self, TableWindow):
self.btnSave.setText(QtGui.QApplication.translate("TableWindow", "Save to File", None, QtGui.QApplication.UnicodeUTF8))
Quelqu'un peut-il voir ce que je pourrais être mal faire?