![]() ![]() |
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. |
|
|
|
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.
|
|
|
|
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. |
|
|
|
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 |
|
|
|
![]() ![]() |
|
Lo-Fi Version | Time is now: 18th May 2013 - 09:35 PM |