[LÖST] Någon som kan Python och GTK?

Här diskuteras programmering och utveckling
Användarvisningsbild
HOLMEN
Fadder
Inlägg: 1724
Blev medlem: 29 mar 2006, 22:39
OS: Ubuntu
Utgåva: Vet inte/ingen utgåva passar
Ort: Göteborg
Kontakt:

[LÖST] Någon som kan Python och GTK?

Inlägg av HOLMEN »

Halloj,

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()
Senast redigerad av 2 HOLMEN, redigerad totalt 15 gång.
palle-kuling
Inlägg: 466
Blev medlem: 16 apr 2008, 21:54
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

Re: Någon som kan Python och GTK?

Inlägg av palle-kuling »

Kod: Markera allt

...
builder.add_from_file("sixa.xml")
...
Erhm, ren kod? ;) Jag skulle nog säga att jag vet inte vilken metod "run" knappen binds till utan xml filen i fråga.
MER MAKT TILL MIG! JAG BESTÄMMER!
Användarvisningsbild
HOLMEN
Fadder
Inlägg: 1724
Blev medlem: 29 mar 2006, 22:39
OS: Ubuntu
Utgåva: Vet inte/ingen utgåva passar
Ort: Göteborg
Kontakt:

Re: Någon som kan Python och GTK?

Inlägg av HOLMEN »

Darn, fel källkod. Du har helt rätt, tack. Det är nu åtgärdat. Det som visades tidigare var källkoden för huvudprogrammet.
Användarvisningsbild
HOLMEN
Fadder
Inlägg: 1724
Blev medlem: 29 mar 2006, 22:39
OS: Ubuntu
Utgåva: Vet inte/ingen utgåva passar
Ort: Göteborg
Kontakt:

Re: [LÖST] Någon som kan Python och GTK?

Inlägg av HOLMEN »

Fick hjälp på Gtkforums. Såhär blev resultatet:

Kod: Markera allt

#!/usr/bin/env python

import gtk
import os

class SetupActionGuide(gtk.Assistant):
    def __init__(self):
        gtk.Assistant.__init__(self)
        self.set_default_size( 400, 300 )

        self.connect('delete_event', self.cb_on_delete)
        self.connect('close', self.cb_close)
        self.connect('cancel', self.cb_close)
        self.connect('prepare', self.cb_prepare)

        # The first page - welcomes the user and changed the bluetooth connection to sixa mode.
	self.page1 = gtk.Label(f)
        self.page1 = gtk.Label("This guide will go trough each step to have a connected gamepad.")
        self.page1.set_line_wrap(True)
        self.page1.show()
        self.append_page(self.page1)
        self.set_page_title(self.page1, 'Welcome to SixA Connection Guide!')
        self.set_page_type(self.page1, gtk.ASSISTANT_PAGE_INTRO)
        self.set_page_complete(self.page1, True )

        # The second page.
        self.page2 = gtk.Label("Press the PS (the middle) button and wait for the gamepad to connect.")
        self.page2.set_line_wrap(True)
        self.page2.show()
        self.append_page(self.page2)
        self.set_page_title(self.page2, 'Step 2: Pairing the gamepad.')
        self.set_page_type(self.page2, gtk.ASSISTANT_PAGE_CONTENT)
        self.set_page_complete(self.page2, True)

        # The third page.
        self.page3 = gtk.Label("Looking for gamepads.")
        self.page3.set_line_wrap(True)
        self.page3.show()
        self.append_page(self.page3)
        self.set_page_title(self.page3, 'Step 3: Checks for connected gamepads.')
        self.set_page_type(self.page3, gtk.ASSISTANT_PAGE_CONTENT)
        self.set_page_complete(self.page3, True)

        # The forth page.
        self.page4 = gtk.Label("When you click next, Bluetooth and gamepad will be configured!")
        self.page4.set_line_wrap(True)
        self.page4.show()
        self.append_page(self.page4)
        self.set_page_title(self.page4, 'Step 4: ')
        self.set_page_type(self.page4, gtk.ASSISTANT_PAGE_CONTENT)
        self.set_page_complete(self.page4, True)


        # The fifth and final page.
        self.page5 = gtk.Label("Hello!")
        self.page5.set_line_wrap(True)
        self.page5.show()
        self.append_page(self.page5)
        self.set_page_title(self.page5, 'Step 5:')
        self.set_page_type(self.page5, gtk.ASSISTANT_PAGE_SUMMARY)


        self.show()

    def cb_on_delete(self, widget, event):
        gtk.main_quit()

    def cb_close(self, assistant):
        gtk.main_quit()

    def cb_prepare(self, assistant, page):
        if self.page1 == page:
            print 'sixa action setup part1'
        elif self.page2 == page:
            print 'sixa action setup part2'
        elif self.page3 == page:
            print 'sixa action setup part3'
        elif self.page4 == page:
            print 'sixa action setup part4'
        elif self.page5 == page:
            print 'sixa action setup part5'



if __name__ == '__main__':
    win = SetupActionGuide()
    win.show()
    gtk.main() 
Skriv svar

Återgå till "Programmering och webbdesign"