很抱歉,如果我想在主题行中传达更多正确的术语。
假设我在Qt 4 Designer生成的pyuic
文件上使用.ui
并将其另存为gui.py
。因为我不应该通过#WARNING来修改标题中提到的文件!此文件中的所有更改都将丢失!,在另一个源文件中,我使用Ui_MainWindow
从gui.py
导入from gui import Ui_MainWindow
。我将QMainWindow
子类化,并将ui
设置为gui.py
与self.ui = Ui_MainWindow()
的主窗口,并使用self.setupUi(self)
进行设置。我的问题是,自动完成现在无法识别当前文件中gui.py
的变量。
当我键入self
以分别填充结果时,如何设置编辑器。
form_class = uic.loadUiType("qt_designed_ui.ui")[0]
class MyWindowClass(QMainWindow, form_class):
def __init__(self, parent=None):
super().__init__(parent)
# bind this subclassed code based UI to the actual UI made with Qt Designer 4
self.ui = Ui_MainWindow()
self.setupUi(self)
如上所述,像self.ui.var
这样的内容会为var
提供内省,但这是非法的陈述。我必须使用self.var
,这是合法的,但不提供内省。此外,我知道self.var
有效,因为整个应用程序都有效,我用该表单解决了类的许多属性,我只是缺乏对PyCharm的内省。
答案 0 :(得分:1)
我更喜欢单一的继承方法:
from gui import Ui_MainWindow
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
Ui_MainWindow
通过self.ui
和QMainWindow
通过self
进行内省检查:
UI组件是Ui_MainWindow
实例的成员,因此可以通过self.ui
访问它们:
self.text_save = self.ui.txt_save