Jag har tills i morgon på mig att bli klar med mitt första "riktiga" program, och jag är oerhört nära (får passa på att tacka Lars som hjälpte mig med ett stort steg framåt).
Jag har googlat, och jag har googlat. Jag behöver hjälp med först och främst en s.k. Gtk.Assistant. Det ska alltså vara en steg, per steg guide som ska hjälpa användaren att koppla upp sin handkontroll (utan att gå in på för mycket ovesäntliga detaljer).
Varje steg ska köra ett kommando som vars output sedan ska visas i nästa steg av guiden. Jag byggde först en guide i Glade, men det skulle tydligen bli enklare ett bygga guide i ren kod med tanke på outputen. Mitt googlande har kommit fram till koden nedan, men den visar en "run" knapp som man måste trycka på innan man går vidare, vilket jag inte vill ha.
Och då är jag är rätt ny på Python så behöver jag hjälp.
Någon?
Kod: Markera allt
#!/bin/env python
# This is script is a GUI for 'sixa action setup' and a part of SixA - http://www.launchpad/gsixaxis
# The code is licensed under the terms of GPL v2
import gtk
import os
class SetupActionGuide(gtk.Assistant):
def __init__(self):
gtk.Assistant.__init__(self)
self.connect('delete_event', self.cb_on_delete)
self.connect('close', self.cb_close)
# The first page
vbox = gtk.VBox(False, 5)
vbox.set_border_width(5)
vbox.show()
self.append_page(vbox)
self.set_page_title(vbox, 'Welcome to SixA Connection Guide!')
self.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONTENT)
label = gtk.Label("This guide will go trough each step to have a connected gamepad.")
label.set_line_wrap(True)
label.show()
vbox.pack_start(label, True, True, 0)
button = gtk.Button(stock=gtk.STOCK_EXECUTE)
button.connect('clicked', self.cb_do_something)
button.show()
vbox.pack_end(button)
# The second page.
vbox = gtk.VBox(False, 5)
vbox.set_border_width(5)
vbox.show()
self.append_page(vbox)
self.set_page_title(vbox, 'Step 1: Make your Bluetooth and gamepad ready.')
self.set_page_type(vbox, gtk.ASSISTANT_PAGE_CONTENT)
label = gtk.Label("Your Bluetooth is now reset into supported mode. Make your gamepad ready!")
label.set_line_wrap(True)
label.show()
vbox.pack_start(label, True, True, 0)
# The final page.
f=os.popen("uptime")
label = gtk.Label(f)
label.set_line_wrap(True)
label.show()
self.append_page(label)
self.set_page_title(label, 'Finished!')
self.set_page_type(label, gtk.ASSISTANT_PAGE_SUMMARY)
self.show()
def cb_on_delete(self, widget, event):
gtk.main_quit()
def cb_do_something(self, button):
self.set_page_complete(button.get_parent(), True)
def cb_close(self, assistant):
self.emit('delete_event', gtk.gdk.Event(gtk.gdk.NOTHING))
if __name__ == '__main__':
win = SetupActionGuide()
win.show()
gtk.main()