Итак, я только что обнаружил что-то, что я считаю ошибкой, но, возможно, я сделал что-то не так, поэтому подумал, что должен опубликовать это здесь
Я спроектировал GUI, используя Qt Designer , а затем загрузил его в мой интерфейсный класс, используя loadUi()
. Все это работает без проблем. Однако затем я добавил свойства в свой класс: одно свойство не вызывает проблем, но как только их становится больше, я получаю SystemError
:
Traceback (most recent call last):
File "test.py", line 23, in <module>
GUI = MainWindow()
File "test.py", line 9, in __init__
loadUi('../gui/test.ui', self)
File "..\Anaconda3\lib\site-packages\PyQt5\uic\__init__.py", line 226, in loadUi
return DynamicUILoader(package).loadUi(uifile, baseinstance, resource_suffix)
File "..\Anaconda3\lib\site-packages\PyQt5\uic\Loader\loader.py", line 72, in loadUi
return self.parse(filename, resource_suffix, basedir)
File "..\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 1021, in parse
actor(elem)
File "..\Anaconda3\lib\site-packages\PyQt5\uic\uiparser.py", line 942, in createConnections
QtCore.QMetaObject.connectSlotsByName(self.toplevelWidget)
SystemError: <built-in function connectSlotsByName> returned a result with an error set
пользовательский интерфейс, который Я загрузил в этом случае простой шаблон QDialog, ничего больше. Вы можете увидеть содержимое test.ui
ниже:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
</widget>
<resources/>
<connections/>
</ui>
Вот код, который создал ошибку:
import sys
from PyQt5.QtWidgets import QDialog, QApplication
from PyQt5.uic import loadUi
class MainWindow(QDialog):
def __init__(self):
super().__init__()
loadUi('../gui/test.ui', self)
self.test = 1
@property
def test2(self):
return self.test
@property
def test3(self):
return self.test
if __name__ == '__main__':
app = QApplication(sys.argv)
GUI = MainWindow()
GUI.show()
sys.exit(app.exec_())
Как только вы удалите одно из свойств или loadUi()
команда, снова работает. Что не так?