私はここで厄介な問題を抱えています.誰かが私が間違っていることについて洞察を与えることができれば幸いです.
数値の表を表示することになっている PyQt アプリがあります。当然、私は QTableWidget を使用しています。現時点では、非常に単純です。テーブル ウィジェットとボタンを含むウィンドウを作成し、それを表示するだけです。私はまだテーブルをまったく作成していません。
ウィンドウに合わせてテーブルのサイズを自動的に変更できるようにしたいのですが、最終的にはこのフォームに他のウィジェットを追加する予定なので、QGridLayout を使用しています。また、Qt Designer でフォームをプレビューすると、正しく表示され、正しく動作します。テーブルは、ボタンが使用するスペースを除くすべてのフォームを占有し、ウィンドウのサイズを変更すると、ウィンドウのサイズも一緒に正しくサイズ変更されます。しかし、生成された Python コードを実行しようとすると、すべてが台無しになります。テーブル ウィジェットとボタンは両方とも、ウィンドウの左上隅で、互いに重なり合って一緒にくしゃくしゃになっています。
Qt Designer 4 を使用して .ui ファイルを作成し、pyuic4 を使用して Python コードを生成しました。どちらのファイルも手動で編集していません。したがって、どちらにも基本的な構文エラーはないと思います。私の推測では、ウィジェット、ウィンドウ、およびレイアウト マネージャーの間の関係を何らかの形で誤解しています。しかし、私は方法を理解できません。
私の .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>
pyuic4 によって .ui ファイルから生成された Python コードは次のとおりです。
# -*- 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))
誰かが私が間違っているかもしれないことを見ることができますか?