여기에 고집스럽게 고집스런 문제가 있습니다. 누군가 내가 잘못하고있는 것에 대해 통찰력을 줄 수 있다면 감사하겠습니다.PyQt 및 QGridLayout에 대한 도움이 필요합니다.
숫자 표를 표시해야하는 PyQt 앱이 있습니다. 그래서 당연히 QTableWidget을 사용하고 있습니다. 지금 당장은 매우 간단합니다. 내가하는 일은 테이블 위젯과 버튼이있는 창을 만들고 표시하는 것뿐입니다. 나는 테이블을 아직 채우지 않을 것이다.
테이블을 자동으로 창의 크기를 조정할 수있게하려면이 양식에 다른 위젯을 추가 할 예정이므로 QGridLayout을 사용하고 있습니다. Qt Designer에서 양식을 미리 볼 때 모양이 올바르게 나타나고 올바르게 동작합니다. 표는 버튼이 사용하는 공간을 제외하고 모든 양식을 사용하며 창 크기를 조정하면 둘 다 올바르게 크기가 조정됩니다. 그러나 생성 된 파이썬 코드를 실행하려고하면 모든 것이 엉망이됩니다. 표 위젯과 버튼은 모두 창의 상단 왼쪽 모서리에 서로 겹쳐서 표시됩니다.
Qt Designer 4를 사용하여 .ui 파일을 만들고 pyuic4를 사용하여 파이썬 코드를 생성했습니다. 나는 수동으로 파일 중 하나를 전혀 편집하지 않았다. 그래서 나는 기본적인 구문 오류가 없다고 가정합니다. 내 생각 엔 위젯, 창 및 레이아웃 관리자 간의 관계를 어떻게 든 오해하고 있습니다. 그러나 나는 방법을 이해할 수 없다. 여기
내 .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 파일에서 생성 된 파이썬 코드 :
# -*- 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))
사람이 내가 될 일을 볼 수 잘못하고있는거야?