Creating a ROX applet
This tutorial will show you how to create a simple ROX applet (a program that runs inside the panel). The applet will be a clock, so we'll also look at timed events.
You should have read the first tutorial.
Start with a normal application
It's good to be able to run applets in their own window too, and its very similar, so we'll start by creating a stand-alone clock application.
Create the application directory as before, and start with this code:
#!/usr/bin/env python import findrox; findrox.version(1, 9, 8) import rox from rox import g import time time_display = g.Label('') def update_time(): time_display.set_text(time.ctime()) update_time() main = rox.Window() main.add(time_display) main.show_all() rox.mainloop()
OK, that's pretty straighforward. A label in a window. To get the time to update we need to add a timeout. This takes the minimum time between calls (in ms) and a function to call. Add this just before entering the mainloop:
g.timeout_add(1000, update_time)
If you run this, you'll see that the time only updates once. update_time() needs to return True to get called again:
def update_time(): time_display.set_text(time.ctime()) return True
Making it an applet
Copy AppRun as AppletRun. Instead of creating a rox.Window, create a rox.applet.Applet, passing the first command-line argument:
import sys from rox import applet main = applet.Applet(sys.argv[1])
Make sure AppletRun is executable. And that's it!
When you click on the program, it runs it in a window using AppRun, but if you drag it to a panel then ROX-Filer runs AppletRun with the ID of a socket on the panel.
For a more complicated task you would put most of the code in a separate file (eg main.py) and get AppRun and AppletRun to import that, to save duplicating code.
- Printer-friendly version
- Login to post comments
Recent comments
2 years 8 weeks ago
2 years 17 weeks ago
3 years 1 week ago
3 years 5 weeks ago
3 years 9 weeks ago
3 years 10 weeks ago
3 years 10 weeks ago
3 years 14 weeks ago
3 years 14 weeks ago
3 years 15 weeks ago