[PyQt] pyuic4 assign invalid roles to labels and fields in Form layout
Phil Thompson
phil at riverbankcomputing.com
Tue Nov 9 18:34:54 GMT 2010
On Tue, 09 Nov 2010 19:25:28 +0100 (CET), Marián Kyral <mkyral at email.cz>
wrote:
> Hello,
> I've folloving ui file:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <ui version="4.0">
> <class>Form</class>
> <widget class="QWidget" name="Form">
> <property name="geometry">
> <rect>
> <x>0</x>
> <y>0</y>
> <width>400</width>
> <height>300</height>
> </rect>
> </property>
> <property name="windowTitle">
> <string>Form</string>
> </property>
> <layout class="QFormLayout" name="formLayout">
> <item row="0" column="0">
> <widget class="QLabel" name="label">
> <property name="text">
> <string>Jablka:</string>
> </property>
> </widget>
> </item>
> <item row="0" column="1">
> <widget class="QLineEdit" name="lineEdit"/>
> </item>
> <item row="1" column="0">
> <widget class="QLabel" name="label_2">
> <property name="text">
> <string>Hrušky:</string>
> </property>
> </widget>
> </item>
> <item row="1" column="1">
> <widget class="QLineEdit" name="lineEdit_2"/>
> </item>
> </layout>
> </widget>
> <resources/>
> <connections/>
> </ui>
>
> pyuic4 generates following code:
> # -*- coding: utf-8 -*-
>
> # Form implementation generated from reading ui file 'form_layout.ui'
> #
> # Created: Tue Nov 9 15:41:01 2010
> # by: PyQt4 UI code generator 4.8.1
> #
> # WARNING! All changes made in this file will be lost!
>
> from PyQt4 import QtCore, QtGui
>
> try:
> _fromUtf8 = QtCore.QString.fromUtf8
> except AttributeError:
> _fromUtf8 = lambda s: s
>
> class Ui_Form(object):
> def setupUi(self, Form):
> Form.setObjectName(_fromUtf8("Form"))
> Form.resize(400, 300)
> self.formLayout = QtGui.QFormLayout(Form)
> self.formLayout.setObjectName(_fromUtf8("formLayout"))
> self.label = QtGui.QLabel(Form)
> self.label.setObjectName(_fromUtf8("label"))
> self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
> self.label)
> self.lineEdit = QtGui.QLineEdit(Form)
> self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
> self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
> self.lineEdit)
> self.label_2 = QtGui.QLabel(Form)
> self.label_2.setObjectName(_fromUtf8("label_2"))
> self.formLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
> self.label_2)
> self.lineEdit_2 = QtGui.QLineEdit(Form)
> self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
> self.formLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
> self.lineEdit_2)
>
> self.retranslateUi(Form)
> QtCore.QMetaObject.connectSlotsByName(Form)
>
> def retranslateUi(self, Form):
> Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form",
> None, QtGui.QApplication.UnicodeUTF8))
> self.label.setText(QtGui.QApplication.translate("Form",
"Jablka:",
> None, QtGui.QApplication.UnicodeUTF8))
> self.label_2.setText(QtGui.QApplication.translate("Form",
> "Hrušky:", None, QtGui.QApplication.UnicodeUTF8))
>
> As you can see, labels have assigned FieldRole and fields have assigned
> LabelRole.
>
> self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
> self.label)
> self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
> self.lineEdit)
>
> This problem is at least in pyqt 4.8.0 and 4.8.1.
A patch to fix it was posted to the list a few days ago.
Phil
More information about the PyQt
mailing list