AttributeError: 'module' object has no attribute 'argv'

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Cathrin
Участник
Сообщения: 67
Зарегистрирован: 16 май 2012, 10:38
Репутация: 0

AttributeError: 'module' object has no attribute 'argv'

Сообщение Cathrin » 09 июн 2012, 11:07

Подскажите,пожалуйста,как можно исправить эту ошибку?

Код: Выделить всё

Traceback (most recent call last):
  File "C:\Users\Cathrin/.qgis/python/plugins\HelloWorld\HelloWorld.py", line 53, in hello_world
    MyProgramme = QApplication(sys.argv)
AttributeError: 'module' object has no attribute 'argv'

Версия Python:
2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]


Версия:
1.8.0-Lisboa Lisboa, a1255fc
вот мой код

Код: Выделить всё

import sys,os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
       MyProgramme = QApplication(sys.argv)
        MainWidget = QVBox(None)
        MainWidget.setCaption("Hello!")
        HelloLabel = QLabel("Hello World!", MainWidget)
        CloseButton = QPushButton("Quit", MainWidget)
        MyProgramme.setMainWidget(MainWidget)
        MyProgramme.connect(CloseButton, SIGNAL("clicked()"), MainWidget, SLOT("close()"))
        MainWidget.show()
        MyProgramme.exec_loop()

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: AttributeError: 'module' object has no attribute 'argv'

Сообщение Александр Мурый » 09 июн 2012, 11:44

В трейсбэке сказано про строку 53, в примере строк явно меньше..

У меня указанный кусок кода тоже не работает, но пишет совсем другое:

Код: Выделить всё

Traceback (most recent call last):
  File "./test.py", line 9, in <module>
    MainWidget = QVBox(None)
NameError: name 'QVBox' is not defined
Редактор материалов, модератор форума

Cathrin
Участник
Сообщения: 67
Зарегистрирован: 16 май 2012, 10:38
Репутация: 0

Re: AttributeError: 'module' object has no attribute 'argv'

Сообщение Cathrin » 09 июн 2012, 11:50

ну просто я не совсем весь код кинула

остальное работало до того как я вставила кусок того кода

вот абсолютно весь

Код: Выделить всё

# -*- coding: utf-8 -*-
# Import the PyQt and QGIS libraries
import sys,os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *


class HelloWorld:

    def __init__(self, iface):
        # Save reference to the QGIS interface
        self.iface = iface
        self.canvas = iface.mapCanvas()

    def initGui(self):
        # Create action that will start plugin
        self.action = QAction(QIcon(":/plugins/"), "&HelloWorld", self.iface.mainWindow())
        # connect the action to the run method
        QObject.connect(self.action, SIGNAL("activated()"), self.hello_world)

        # Add toolbar button and menu item
        self.iface.addPluginToMenu("HelloWorld", self.action)



    def unload(self):
        # Remove the plugin menu item and icon
        self.iface.removePluginMenu("HelloWorld",self.action)



    # run
    def hello_world(self):


        QMessageBox.information(self.iface.mainWindow(), QCoreApplication.translate('HelloWorld', "HelloWorld"), QCoreApplication.translate('HelloWorld', "HelloWorld"))
        f=open('temp/op.txt', 'w')


        layer = self.iface.activeLayer()
        feats = layer.selectedFeatures()
        for feat in feats:
            attrs = feat.attributeMap()


            for (k,attr) in attrs.iteritems():
                if k in [0,1,2]:
                    if k ==1:
                        f.write("%d:Ploshad -  %s\r\n" % (k, attr.toString()))
                    if k ==2:
                        f.write("%d:Nomer vylela -  %s\r\n" % (k, attr.toString()))
        MyProgramme = QApplication(sys.argv)
        MainWidget = QVBox(None)
        MainWidget.setCaption("Hello!")
        HelloLabel = QLabel("Hello World!", MainWidget)
        CloseButton = QPushButton("Quit", MainWidget)
        MyProgramme.setMainWidget(MainWidget)
        MyProgramme.connect(CloseButton, SIGNAL("clicked()"), MainWidget, SLOT("close()"))
        MainWidget.show()
        MyProgramme.exec_loop()






        f.close()
if __name__ == "__main__":
    pass

Последний раз редактировалось Cathrin 09 июн 2012, 11:53, всего редактировалось 1 раз.

Cathrin
Участник
Сообщения: 67
Зарегистрирован: 16 май 2012, 10:38
Репутация: 0

Re: AttributeError: 'module' object has no attribute 'argv'

Сообщение Cathrin » 09 июн 2012, 11:52

http://rfpro.ru/forum/15/241

я пытаюсь выполнить вот такую вещь,которая описывается там

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: AttributeError: 'module' object has no attribute 'argv'

Сообщение Ariki » 09 июн 2012, 14:08

Я, конечно, не совсем в теме, но, может быть, не стоит создавать QApplication из плагина QGIS?

Voltron
Гуру
Сообщения: 2627
Зарегистрирован: 29 мар 2007, 14:12
Репутация: 34
Откуда: Ukraine

Re: AttributeError: 'module' object has no attribute 'argv'

Сообщение Voltron » 09 июн 2012, 14:45

Cathrin, вы определитесь, что вы хотите сделать: модуль или самостоятельное приложение. У вас в коде дикая мешанина.

Да, изучать PyQt лучше не по форуму, а по нормальной книге (например, такой) + документации. Без азов вы постоянно будет теряться в элементарных вещах

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя