PyQt绑定' self'的当前实例导入UI' self'

时间:2017-03-28 05:21:47

标签: qt python-3.x autocomplete pyqt

很抱歉,如果我想在主题行中传达更多正确的术语。

假设我在Qt 4 Designer生成的pyuic文件上使用.ui并将其另存为gui.py。因为我不应该通过#WARNING来修改标题中提到的文件!此文件中的所有更改都将丢失!,在另一个源文件中,我使用Ui_MainWindowgui.py导入from gui import Ui_MainWindow。我将QMainWindow子类化,并将ui设置为gui.pyself.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的内省。

1 个答案:

答案 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.uiQMainWindow通过self进行内省检查:

enter image description here

enter image description here

UI组件是Ui_MainWindow实例的成员,因此可以通过self.ui访问它们:

self.text_save = self.ui.txt_save