【问题标题】:Promote PyQt Widget推广 PyQt 小部件
【发布时间】:2011-06-17 11:45:52
【问题描述】:

我正在使用 PyQt 并尝试在 QtDesigner 中推广一个小部件。如果我在“头文件”字段中指定包含我的小部件子类的文件的完整模块路径,我就能让它工作。

有没有更好的方法将 QtDesigner 中的小部件提升为 PyQt 小部件,而无需指定完整的模块路径?

这里有一个例子,希望能说明我在说什么:

/PythonModuleRoot/Ui/MainUi.py

from PyQt4 import QtCore, QtGui, uic
class MainUi(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.ui = uic.loadUi(os.path.join(os.path.dirname(__file__), 'MainUi.ui'), self)

/PythonModuleRoot/Ui/CustomWidget.py

from PyQt4 import QtCore, QtGui, uic
class CustomWidget(QtGui.QWidget):
    def __init__(self, parent):
        QtGui.QWidget.__init__(self, parent)

/PythonModuleRoot/Ui/MainUi.ui

在 MainUi.ui 中,我提升了一个小部件并将 Header 文件字段设置为:“PythonModuleRoot.Ui.CustomWidget”。

【问题讨论】:

  • 您已在编辑中回答了自己的问题。为什么不将您的解决方案发布为答案呢? Posting self-answers is encouraged here.
  • 对不起,我不明白。如果您可以在上面的简单示例中包含 MainUi.ui 的 XML,这将非常有帮助,可能在将其提升为提升类名称之前和之后:CustomWidgets.py,头文件:Widgets.CustomWidget.py,我猜,.. . 看看我能不能理解整个过程。
  • @keegan3d : 你可以贴出Promote to UI 的截图!

标签: python pyqt


【解决方案1】:

我明白了,我的实际代码与我给出的简化示例略有不同。我的实际代码更像这样:

/PythonModuleRoot/Ui/MainUi.py

/PythonModuleRoot/Ui/MainUi.ui

/PythonModuleRoot/Ui/Widgets/CustomWidget.py

所以我只需要将 Header 文件的内容更改为 MainUi 导入 CustomWidget 的方式,即:“Widgets.CustomWidget”。这篇文章为我指明了正确的方向:http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg17893.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 2014-03-02
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多