2011-12-11 12 views
1

eric ideを使用してqtでpythonをプログラムする方法を学んでいます。しかし、私は1つのエラーがあるようです。pyqtでQurlが定義されていません

グローバルQurlが定義されていないとかQurlはどのように定義できますか?

from PyQt4.QtGui import QMainWindow 

from PyQt4.QtCore import pyqtSignature 
from Ui_mainwindow import Ui_MainWindow 

class MainWindow(QMainWindow, Ui_MainWindow): 
    """ 
    Class documentation goes here. 
    """ 
    def __init__(self, parent = None): 
     """ 
     Constructor 
     """ 
     QMainWindow.__init__(self, parent) 
     self.setupUi(self) 

    @pyqtSignature("") 
    def on_btnNavigate_released(self): 
     """ 
     Public slot invoked when the user clicks the Navigate Button . 
     """ 
     self.webView.load(QUrl("http://qt.nokia.com/")); 

アム以下のあなたはどこからでもQUrlをインポートしませんでした

答えて

0

thisチュートリアル。あなたもちょうどQtCoreからQUrlをインポートすることができますが、QtCoreは巨大であり、それは、彼らがどこから来たのかを推測することは難しいことではありませんので、すべてのクラスがQ接頭辞を持っているので、ここで*インポートは、一般的である

from PyQt4.QtCore import * 

注:この操作を行います。これはもちろんスタイルの問題ですが、個人的に私はQtCoreQtGuiからの*の輸入を使用しています。 PyQt本のサンプルも同じです。

+1

実際には、ルート名前空間が乱雑になる可能性があるため、PyQt4.QtCore import *を実行するとは考えられません。なぜpyuic4は 'PyQt4 import QtCore'のようなインポートでコードを生成するのですか?その悪い習慣も私は自分自身をやめさせようとしています。 – jdi

+0

@ jdi。 Qtは名前空間をバージョン4に分割しているので、特にスター付きのインポートについては同意します。一般的には、特に学習目的やサンプルコードでは、「ロングハンド」形式がしばしばはるかに明確になります。私自身のコードでは、 'QtCore'、' QtGui'などをインポートするのではなく、通常は(チュートリアルのように)明示的に各項目をインポートすることを好みますが、主なことは次のとおりです。 – ekhumoro

3

あなたが投稿したコードは、あなたがリンクを投稿したチュートリアルの一部としてEric4 IDEによってほとんど自動生成されます。

あなたは慎重にチュートリアルのthis pageを読めば、それは(ページの下の方)on_btnNavigate_releasedメソッドのコードスニペット、次の段落にQUrlをインポート言及:、これが動作するためにすることを

お知らせQUrlをインポートする必要があります(チュートリアルに付随するソースコードを見てください)。あなたに公平であるために、けれども

、ソースコードスニペットは、実際には、関連するインポート行は表示されません!

from PyQt4.QtCore import pyqtSignature, QUrl 
... 

@pyqtSignature("") 
def on_btnNavigate_released(self): 
    """ 
    Slot documentation goes here. 
    """ 
    self.webView.setUrl(QUrl(self.txtUrl.text())) 
関連する問題