OESF | ELSI | pdaXrom | OpenZaurus | Zaurus Themes | Community Links | Ibiblio

IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> qcop not reaching Python apps
zenyatta
post Jul 13 2004, 11:08 PM
Post #1





Group: Members
Posts: 366
Joined: 4-November 03
From: Slovakia
Member No.: 850



Hi all,

I have a little problem with Python apps. Say I have a trivial PyQt application in /root/test.py:
CODE
#!/usr/bin/python
import sys
from qt import *
from qtpe import *
class MyWin(QVBox):
   def __init__(self, parent):
       QVBox.__init__(self, parent)
       self.setCaption('Test')
       label = QLabel(self)
       label.setText('Hello, world!')
app=QPEApplication(sys.argv)
win=MyWin(None)
app.setMainWidget(win)
win.show()
app.exec_loop()

I type chmod +x test.py and then ./test.py . The app runs OK but when I open another konsole session and type qcop QPE/Application/test.py 'quit()' it doesn't come through.

How do I know that QPE/Application/test.py is the right channel? When the app starts the file /tmp/qcop-msg-test.py is created. I also tried other channels like QPE/Application/python but the results are the same. The funniest thing, though, is that when I say qcop QPE/System 'quit()' the app does quit - and it is the only one to do so! Konsole continues to run, as well as the rest of Opie.

This is a major problem because the taskbar uses qcop to raise() an application when you tap its taskbar icon. So when I set up my app to be launched through an icon, it misbehaves: once it's "minimized" e.g. by pressing the Home button, there is no way to bring it back up - it has to be shut down with SIGTERM.

What I think is happening is that either the app fails to actually create a QCop channel or it creates a different one than Qtopia/Opie expects. Can anyone tell me how to find out the name of the channel a QPEApplication creates? Thanks in advance.

z.
Go to the top of the page
 
+Quote Post
Mickeyl
post Jul 14 2004, 10:29 AM
Post #2





Group: Members
Posts: 1,497
Joined: 12-November 03
From: Germany
Member No.: 907



Try QPEApplication(sys.argv[1:]) - same which is needed to get an icon to appear in the TaskBar. I put a lengthy explanation for why this is needed in one of the forums, probably the old Sharp one, can't remember.
Go to the top of the page
 
+Quote Post
zenyatta
post Jul 14 2004, 11:31 PM
Post #3





Group: Members
Posts: 366
Joined: 4-November 03
From: Slovakia
Member No.: 850



Solved. The first argument to QPEApplication() must be the same string as the Exec value in the corresponding .desktop file. I did not actually need sys.argv[1:] to do that (my launch mechanism is a bit different).

Also, neither value should contain the full path, just the file name of the launch script (which means the launch script needs to be on the PATH).

Thanks for the pointer.

z.
Go to the top of the page
 
+Quote Post
sdjf
post Aug 28 2008, 08:52 PM
Post #4





Group: Members
Posts: 454
Joined: 17-November 05
Member No.: 8,551



About qcop channels, the qcoptest tool may help you figure it out, although it's a matter of trial and error, but it will show you when a message gets thru I believe. Here's what I know about qcoptest:

http://sdjf.esmartdesign.com/ipks/qcoptest.html

sdjf
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 26th December 2014 - 12:46 PM