【发布时间】:2017-03-29 11:58:02
【问题描述】:
抱歉,如果我在主题行中试图传达的内容有更正确的行话。
假设我在 Qt 4 Designer 生成的.ui 文件上使用pyuic 并将其保存为gui.py。因为我不应该修改 # WARNING!在此文件中所做的所有更改都将丢失!,在另一个源文件中,我从 gui.py 和 from gui import Ui_MainWindow 导入 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 的自省。
【问题讨论】:
-
你是说 PyCharm 没有对
self.ui应用适当的内省吗? -
@Crispin 不,在我的
QMainWindow子类中的self,它使用pyuic生成的gui.py的内容初始化它的ui。使用self.ui前缀寻址变量不起作用,我必须只使用self,它不提供自省。不过奇怪的是,它确实提供了对self.ui的内省。 -
我很困惑。也许一些示例代码会有所帮助。标准约定是继承
QMainWindow并设置self.ui = Ui_MainWindow()。这是你在做什么? -
@Crispin 我已经添加了我正在使用的代码。
-
super(MyWindowClass).__init__(parent) ?
标签: qt python-3.x autocomplete pyqt