Hello everyone,
regarding the last tests I modified the code. Now:
""""""
def main(): # outside the Extension class
app = QApplication(sys.argv) # A new instance of QApplication
form = ExampleApp() # We set the form to be our ExampleApp (design)
form.show() # Show the form
app.exec_() # and execute the app
def performAction(self, action, glwidget): # inside the Extension class
self.emit(SIGNAL("message(const QString&)"), "performing action...")
# return the undo command (ownership will be handled automatically)
# return the undo command (ownership will be handled automatically)
main()
""""""
Now avogadro finishes when I push the button, as the last sections of the
first e-mail, I am not sure about the reason (Crash the program or the
probably not intentional call of the quit() function)
I tried to attach the current version of the example script.
Thank you again.
R.R.
2016-04-01 17:57 GMT+02:00 Rupe <ruben.ruperez...@gmail.com>:
> Hello,
> First of all, sorry about my lack of knowledge, and thank you, any kind of
> advice will be welcome.
> I've just started to learn about PyQt4 and avogadro, few weeks ago.
>
> I am facing some problems that I haven't could solve by myself.
> I am working in the implementation of a python tool to provide different
> plots from avogadro results using PyQt4, giving a graphical interface for
> an user who will be able to choose between different options or
> customizations.
>
> To do that, I started learning PyQt4 with some easy tutorials. Now I would
> like to run one of them, which I tried independent from avogadro, through
> avogadro. I thought that I could use the Extension option, thus I followed
> the examples from the main website.
>
> I achieved that avogadro recognises my extension script in python and also
> appears as a new option in the main tool bar.
>
> The problems that I am facing are basically two (for now), even one of
> them I think that I fixed in a rude way.
> ____________________________________
>
>
> The first problem, even it is not the most important problem (I guess), it
> is related with the imported files to the main script.
>
> I used the QTdesigner to generate "design.ui" file, then I converted it
> into design.py file to import it from my main python script application in
> an easier way. When I tried to do it in the extension it wasn't been
> imported, although I've put the file to be imported in the same folder.
>
> Is there a path problem (when I use "import design"), or is not possible
> to do it within avogadro's python Extension?
> ____________________________________
>
>
> The second problem, and the most important, appears after the apparent
> solution of the first problem. To solve the previous problem, I copied the
> design code inside the main extension python file, and then I defined the
> main function used in the example to be called by the performinngaction
> function inside the Extension class, as it is shown in the following piece
> of code:
>
> """""""""
>
> [...]
>
> def main(self):
> app = QApplication(sys.argv) # A new instance of QApplication
> form = ExampleApp() # We set the form to be our ExampleApp (design)
> form.show() # Show the form
> app.exec_() # and execute the app
>
> def performAction(self, action):
> self.emit(SIGNAL("message(const QString&)"), "performing action...")
> # return the undo command (ownership will be handled automatically)
> # return the undo command (ownership will be handled automatically)
> return self.main()
>
> """""""""
>
> My example of a GUI application (ExampleApp() from: class
> ExampleApp(QMainWindow, Ui_MainWindow): ) is really simple: a window with a
> list space and two buttons, one of them to close the GUI.
>
> The problem appears when I click the action button in the menu of
> Avogadro, the perfomingaction function is called, but the sys.argv is not
> recognized:
>
> """""""""
> performing action...
> Traceback (most recent call last):
> File "/***/****/.avogadro/extensionScripts/main2.py", line 120, in
> performAction
> return self.main()
> File "/***/****/.avogadro/extensionScripts/main2.py", line 111, in main
> app = QApplication(sys.argv) # A new instance of QApplication
> AttributeError: 'module' object has no attribute 'argv'
> """""""""
>
> Finally, making some tests, when I imported matplotlib, the argv seems to
> be initialized, and when I click the button in the bar tool of the
> avogadro, the avogadro finishes... (and I don't know if it is because the
> program crashed or because the button with the option quit() inside the
> code)
>
>
> Sorry for the length of the e-mail. And thank you again.
>
> Best regards,
>
> R. Ruperez
>
>
>
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import matplotlib.pyplot as plt
import Avogadro
def testplot():
plt.plot([1,3,2,4])
plt.show()
# always use 'Extension' for class name
class Extension(QObject):
__pyqtSignals__ = ("message(const QString&)",)
def __init__(self):
QObject.__init__(self)
def name(self):
return "Example Plot"
def description(self):
return "This example is for a plot"
def actions(self):
actions = []
action = QAction(self)
action.setText("Example plot")
actions.append(action)
return actions
def menuPath(self, action):
return "Test"
def performAction(self, action, glwidget):
self.emit(SIGNAL("message(const QString&)"), "performing action...")
# return the undo command (ownership will be handled automatically)
testplot()
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Avogadro-Discuss mailing list
Avogadro-Discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/avogadro-discuss