2017-08-04 28 views
-1

だから、私は私が持っているPythonのコードのためのUIを作成しようとしているが、問題の上につまずく続けるよ...はAttributeError:モジュールのPyQt5.QtGui」は、今のところ何の属性「QWidgetの」

を持っていませんすべてのコードは、2つのテキストエディタボックス、および1つのボタンで、ウィンドウを作成しているん。ボタンを押すと、「テスト」が印刷されます。

私は、Pythonに変換するPyQt5そして、UIを作るためにQTDesignerを使用して、コードを編集しました。

マイコード:

AttributeError: module 'PyQt5.QtGui' has no attribute 'QWidget' 

私はclass Ui_Widget(QtGui.QtWidgets):class Ui_Widget(QtGui.QWidget): を変更する場合でも、私は何の問題を知っているAttributeError: module 'PyQt5.QtGui' has no attribute 'QtWidgets'

誰もが得られます。

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

# Form implementation generated from reading ui file 'widget.ui' 
# 
# Created by: PyQt5 UI code generator 5.9 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_Widget(QtGui.QWidget): 
    def setupUi(self, Widget): 
     Widget.setObjectName("Widget") 
     Widget.resize(681, 382) 
     self.horizontalLayout = QtWidgets.QHBoxLayout(Widget) 
     self.horizontalLayout.setContentsMargins(11, 11, 11, 11) 
     self.horizontalLayout.setSpacing(6) 
     self.horizontalLayout.setObjectName("horizontalLayout") 
     self.in_box = QtWidgets.QTextEdit(Widget) 
     self.in_box.setMaximumSize(QtCore.QSize(200, 350)) 
     self.in_box.setObjectName("in_box") 
     self.horizontalLayout.addWidget(self.in_box) 
     self.convert = QtWidgets.QPushButton(Widget) 
     self.convert.setObjectName("convert") 
     self.horizontalLayout.addWidget(self.convert) 
     self.gridLayout = QtWidgets.QGridLayout() 
     self.gridLayout.setContentsMargins(11, 11, 11, 11) 
     self.gridLayout.setSpacing(6) 
     self.gridLayout.setObjectName("gridLayout") 
     self.out_box = QtWidgets.QTextEdit(Widget) 
     self.out_box.setMaximumSize(QtCore.QSize(200, 350)) 
     self.out_box.setObjectName("out_box") 
     self.gridLayout.addWidget(self.out_box, 6, 0, 1, 1) 
     self.horizontalLayout.addLayout(self.gridLayout) 

     self.retranslateUi(Widget) 
     QtCore.QMetaObject.connectSlotsByName(Widget) 

    def retranslateUi(self, Widget): 
     _translate = QtCore.QCoreApplication.translate 
     Widget.setWindowTitle(_translate("Widget", "Converter")) 
     self.convert.setText(_translate("Widget", "Convert")) 
    self.convert.clicked.connect(self.convertclick) 

    def convertclick(self): 
     print ('Test') 



if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    Widget = QtWidgets.QWidget() 
    ui = Ui_Widget() 
    ui.setupUi(Widget) 
    Widget.show() 
    sys.exit(app.exec_()) 

これは私が取得エラーです多分?

乾杯。

+1

** pyuicにより生成されたコードを編集しないでください。これを読む:[PyQt5ドキュメント - のQt Designerを使用する](http://pyqt.sourceforge.net/Docs/PyQt5/designer.html)。 – ekhumoro

答えて

3

あなたのエラーはこちらから:

Ui_Widget(QtGui.QWidget) 

それは基本的に問題が何であるかがわかります。

それはあなたのインポートがQT5スタイルであるとして、あなたがここにいくつかのQT4とQT5を混合しているようだが、QtGui.QWidgetはQT4スタイルのように見えます。

に沿っ置き換え:私はあなたが本当に何をしているかわかりませんが、あなたはこれを言及する場合:Even when I change class Ui_Widget(QtGui.QWidget): to class Ui_Widget(QtGui.QtWidgets): I get AttributeError: module 'PyQt5.QtGui' has no attribute 'QtWidgets'正しいのですdocs

備考に応じて適合するものでなければならない

Ui_Widget(QtWidgets.QWidget) 

を。あなたは既にPyQt5.QtGuiからQtWidgetsを輸入し、そしてません。 Ui_Widget(QtWidgets)を使用してください。

要するに、これらのすべてのエラーは、QT4とQT5の間のモジュールに関するリファクタリングに関連しているようです。ドキュメントが役立つはずです。

+0

'トレースバック(最新の呼び出しの最後):Ui_Widget self.convertで ファイル "converter_widget_ui.py"、ライン43、: クラスUi_Widget(QtWidgets.QWidget)で ファイル "converter_widget_ui.py"、11行、。 clicked.connect(self.convertclick) NameError:名前 'self'が定義されていません ' – CandyGum

関連する問題