python - 无法从pyuic4生成的文件中导入名称

时间:2014-09-22 19:54:06

标签: python pyqt4 pyuic

我有以下两个脚本,第一个脚本是使用pyuic4 for Windows生成的,并没有被修改。

textedit.py:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mytextedit.ui'
#
# Created: Mon Sep 22 14:47:34 2014
#      by: PyQt4 UI code generator 4.11.2
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_notepad(object):
    def setupUi(self, notepad):
        notepad.setObjectName(_fromUtf8("notepad"))
        notepad.resize(763, 638)
        self.centralwidget = QtGui.QWidget(notepad)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralwidget)
        self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
        self.verticalLayout = QtGui.QVBoxLayout()
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.tabWidget = QtGui.QTabWidget(self.centralwidget)
        self.tabWidget.setMaximumSize(QtCore.QSize(16777215, 16777215))
        self.tabWidget.setTabShape(QtGui.QTabWidget.Triangular)
        self.tabWidget.setTabsClosable(True)
        self.tabWidget.setMovable(True)
        self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
        self.tab = QtGui.QWidget()
        self.tab.setObjectName(_fromUtf8("tab"))
        self.verticalLayout_3 = QtGui.QVBoxLayout(self.tab)
        self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
        self.plainTextEdit = QtGui.QPlainTextEdit(self.tab)
        self.plainTextEdit.setObjectName(_fromUtf8("plainTextEdit"))
        self.verticalLayout_3.addWidget(self.plainTextEdit)
        self.tabWidget.addTab(self.tab, _fromUtf8(""))
        self.tab_2 = QtGui.QWidget()
        self.tab_2.setObjectName(_fromUtf8("tab_2"))
        self.tabWidget.addTab(self.tab_2, _fromUtf8(""))
        self.verticalLayout.addWidget(self.tabWidget)
        self.verticalLayout_2.addLayout(self.verticalLayout)
        notepad.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(notepad)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 763, 21))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        self.menuFile = QtGui.QMenu(self.menubar)
        self.menuFile.setObjectName(_fromUtf8("menuFile"))
        self.menuEdit = QtGui.QMenu(self.menubar)
        self.menuEdit.setObjectName(_fromUtf8("menuEdit"))
        notepad.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(notepad)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        notepad.setStatusBar(self.statusbar)
        self.actionNew = QtGui.QAction(notepad)
        self.actionNew.setObjectName(_fromUtf8("actionNew"))
        self.actionOpen = QtGui.QAction(notepad)
        self.actionOpen.setObjectName(_fromUtf8("actionOpen"))
        self.actionSave = QtGui.QAction(notepad)
        self.actionSave.setObjectName(_fromUtf8("actionSave"))
        self.actionSave_As = QtGui.QAction(notepad)
        self.actionSave_As.setObjectName(_fromUtf8("actionSave_As"))
        self.actionPaste = QtGui.QAction(notepad)
        self.actionPaste.setObjectName(_fromUtf8("actionPaste"))
        self.actionCut = QtGui.QAction(notepad)
        self.actionCut.setObjectName(_fromUtf8("actionCut"))
        self.actionCopy = QtGui.QAction(notepad)
        self.actionCopy.setObjectName(_fromUtf8("actionCopy"))
        self.actionDelete = QtGui.QAction(notepad)
        self.actionDelete.setObjectName(_fromUtf8("actionDelete"))
        self.actionDelete_Line = QtGui.QAction(notepad)
        self.actionDelete_Line.setObjectName(_fromUtf8("actionDelete_Line"))
        self.actionSelect_All_2 = QtGui.QAction(notepad)
        self.actionSelect_All_2.setObjectName(_fromUtf8("actionSelect_All_2"))
        self.menuFile.addAction(self.actionNew)
        self.menuFile.addAction(self.actionOpen)
        self.menuFile.addAction(self.actionSave)
        self.menuFile.addAction(self.actionSave_As)
        self.menuEdit.addAction(self.actionPaste)
        self.menuEdit.addAction(self.actionCut)
        self.menuEdit.addAction(self.actionCopy)
        self.menuEdit.addAction(self.actionDelete)
        self.menuEdit.addAction(self.actionDelete_Line)
        self.menuEdit.addAction(self.actionSelect_All_2)
        self.menubar.addAction(self.menuFile.menuAction())
        self.menubar.addAction(self.menuEdit.menuAction())

        self.retranslateUi(notepad)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(notepad)

    def retranslateUi(self, notepad):
        notepad.setWindowTitle(_translate("notepad", "Text Edit", None))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("notepad", "Tab 1", None))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("notepad", "Tab 2", None))
        self.menuFile.setTitle(_translate("notepad", "File", None))
        self.menuEdit.setTitle(_translate("notepad", "Edit", None))
        self.actionNew.setText(_translate("notepad", "New", None))
        self.actionNew.setShortcut(_translate("notepad", "Ctrl+N", None))
        self.actionOpen.setText(_translate("notepad", "Open", None))
        self.actionOpen.setShortcut(_translate("notepad", "Ctrl+O", None))
        self.actionSave.setText(_translate("notepad", "Save", None))
        self.actionSave.setShortcut(_translate("notepad", "Ctrl+S", None))
        self.actionSave_As.setText(_translate("notepad", "Save As", None))
        self.actionSave_As.setShortcut(_translate("notepad", "Ctrl+Shift+S", None))
        self.actionPaste.setText(_translate("notepad", "Paste", None))
        self.actionPaste.setShortcut(_translate("notepad", "Ctrl+V", None))
        self.actionCut.setText(_translate("notepad", "Cut", None))
        self.actionCopy.setText(_translate("notepad", "Copy", None))
        self.actionDelete.setText(_translate("notepad", "Delete", None))
        self.actionDelete_Line.setText(_translate("notepad", "Delete Line", None))
        self.actionSelect_All_2.setText(_translate("notepad", "Select All", None))

start.py:

#! /usr/bin/env python3.4

import sys
from PyQt4 import QtCore, QtGui
from textedit import UI_notepad

class StartQT4(QtGui.QMainWindow):
    """docstring for StartQT4"""
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.parent = parent
        self.ui = UI_notepad()
        self.ui.setupUi(self)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    myapp = StartQT4()
    myapp.show()
    sys.exit(app.exec_())

我对导入的工作方式有相当好的理解,但无论我尝试什么,我总会得到错误:

Traceback (most recent call last):
  File "E:\Python\Text Editor\start.py", line 5, in <module>
    from textedit import UI_notepad
ImportError: cannot import name 'UI_notepad'

1 个答案:

答案 0 :(得分:2)

i

中需要小写from textedit import Ui_notepad

您正在使用from textedit import UI_notepad,而您的课程是:

class Ui_notepad(object)&lt; - i而非I