[PySide] QtDesigner ???
David Ching
dc at dcsoft.com
Wed Apr 27 16:52:25 CEST 2022
Hi Paolo,
I again tried your original code, and this time got an error:
c:\Src\paolo_orig>python pyDBManager.py
Traceback (most recent call last):
File "c:\Src\paolo_orig\pyDBManager.py", line 166, in <module>
window = MainWindow()
File "c:\Src\paolo_orig\pyDBManager.py", line 61, in __init__
self.ui.setupUi(self)
File "c:\Src\paolo_orig\Ui\DBManagerMainWindowBad.py", line 246, in
setupUi
self.tab_widget.setCurrentIndex(3)
AttributeError: 'PySide6.QtWidgets.QSpacerItem' object has no attribute
'hasHeightForWidth'
I had rebuilt your code by editing your batch file to fix directories on my
system and ran it. This runs uic and rcc. I diffed the results with yours.
Earlier I had missed differences in the generated
"UI\DBManagerMainWindowBad.py" in line 246:
Yours: self.tab_widget.setCurrentIndex(3)
Mine: self.tab_widget.setCurrentIndex(0)
I don't know why the generated file was different; perhaps because I am
using 6.2 tool and you are using 6.3. But, when I changed mine to be like
yours, I got the same error.
Having reproduced your issue, I tried moving the snake_case enabling before
and after the import of the generated code, and it made no difference, i.e.
there was an error with both:
from Ui.DBManagerMainWindowBad import Ui_DBManagerMainWindow
from __feature__ import snake_case, true_property
and
from __feature__ import snake_case, true_property
from Ui.DBManagerMainWindowBad import Ui_DBManagerMainWindow
Since that failed, I disabled snake_case --- I verify with you that it fixes
it!
I commented out
#from __feature__ import snake_case, true_property
And to avoid Atttribute errors at runtime, changed the necessary calls to
methods of the "self.ui.xxx" widgets to use camelCase e.g.
#self.ui.status_bar.add_permanent_widget(self.status_log)
self.ui.status_bar.addPermanentWidget(self.status_log)
Then it worked --- there does seem to be an error in generated code if snake
case is enabled.
Thanks,
David
-----Original Message-----
From: Paolo De Stefani <paolo at paolodestefani.it>
Sent: Tuesday, April 26, 2022 11:04 AM
To: David Ching <dc at dcsoft.com>
Cc: pyside at qt-project.org
Subject: Re: [PySide] QtDesigner ???
I also noted that the error message is different if a modify the generated
pyDBManagerMainWIndowBad.py the original error is:
C:\PyWare\pyDBManager\Bug>python pyDBManager.py Traceback (most recent call
last):
File "C:\PyWare\pyDBManager\Bug\pyDBManager.py", line 161, in <module>
window = MainWindow()
File "C:\PyWare\pyDBManager\Bug\pyDBManager.py", line 56, in __init__
self.ui.setupUi(self)
File "C:\PyWare\pyDBManager\Bug\DBManagerMainWindowBad.py", line 133, in
setupUi
self.gridLayout.setContentsMargins(0, 0, 0, 0)
AttributeError: 'PySide6.QtWidgets.QGridLayout' object has no attribute
'setContentsMargins'. Did you mean: 'getContentsMargins'?
If i add even an import line like import os and run again the script the
error message is:
C:\PyWare\pyDBManager\Bug>python pyDBManager.py Traceback (most recent call
last):
File "C:\PyWare\pyDBManager\Bug\pyDBManager.py", line 161, in <module>
window = MainWindow()
File "C:\PyWare\pyDBManager\Bug\pyDBManager.py", line 56, in __init__
self.ui.setupUi(self)
File "C:\PyWare\pyDBManager\Bug\DBManagerMainWindowBad.py", line 30, in
setupUi
if not DBManagerMainWindow.objectName():
AttributeError: 'MainWindow' object has no attribute 'objectName'. Did you
mean: 'object_name'?
Why this behaviour ???
But looks like direct linked to the snake_case option
More information about the PySide
mailing list