fdredk Skrevet 1. november 2005 Del Skrevet 1. november 2005 Hei Jeg driver litt med PyGTK fortiden, og har så langt et hovedvinduet bestående av en label og to knapper. Labelen inneholder tekst, som skal endres vær gang knapp1 blir trykket. For eksempel skal labelen inneholde 'hei', når knappen ikke har blitt trykket enda. Men inneholde 'hallo' når knappen har blitt trykket en gang, og til slutt inneholde 'test' når knappen blir trykket for andre gang. Egentlig en "next" knapp. Jeg tenkte først å få next knappen min til å utløse et nytt vindu med en ny label vær gang den blir trykket. Men det må da finnes en annen måte å gjøre dette på? Takker for alle svar Lenke til kommentar
dabear Skrevet 1. november 2005 Del Skrevet 1. november 2005 Nybegynner med pygtk sjøl, så ikke forvent allverdens på knappen, setter du knappObjektet.connect('clicked', self.changemarkup) og da definerer du changemarkup(self, obj) til å sette set_markup('ny tekst') på labelen. Husk at metoden som kontrollerer vinduet ikke må inneholde kode som lukkern vinduet (.destroy, gtk.main_quit og sikkert flere). Husk at du kan åpne knappen med gtk.Button( stock='gtk-next') eller noe sånt for å få en "next"-knapp Lenke til kommentar
fdredk Skrevet 1. november 2005 Forfatter Del Skrevet 1. november 2005 Takker for svar. Men vil ikke det du nevner kun føre til at labelen får verdien 'ny tekst' vær gang next knappen trykkes, og ikke en egendefinert tekst for vær gang knappen trykkes. Så jeg kom på at jeg kanskje kunne få funksjonen som kalles opp når knappen trykkes til å gi fra seg en verdi etter hvilken verdi selve labelen min allerede har. Om labelen har en verdi lik 1 skal funksjonen gi labelen verdien 2. Og om labelen har 2, sett til 3. Dette gjentar seg da i det uendelige. Den går videre oppover etter hvor mange ganger next knappen trykkes. Så om dette teoretisk skal funke lurer jeg på hvordan jeg kan sjekke om hvilken verdi en label (eller hvilken som helst gtk objekt) har. test = gtk.Label("testVerdi") Hvordan kan jeg nå kjøre en if for å sjekke om 'test' labelen har verdien 'testVerdi'? Håper dere forstår, ble litt rotete post dette Lenke til kommentar
dabear Skrevet 1. november 2005 Del Skrevet 1. november 2005 (endret) http://www.pygtk.org/pygtk2reference/class-gtklabel.html se på set_text og get_text. if test.get_text() == 'noe': gjør ditten og datten Endret 1. november 2005 av dabear Lenke til kommentar
fdredk Skrevet 3. november 2005 Forfatter Del Skrevet 3. november 2005 Tusen takk for svar dabear! Men jeg har enda ikke oppnådd det jeg ønsker. Det jeg prøver å finne ut av er hvordan jeg skal lage en "veileder". Et program som inneholder flere steg. Når man trykker på Next knappen dukker det opp ny informasjon i vinduet. Hvordan (sånn teoretisk) kan dette lages? Er det en bedre måte å gjøre det på, enn å få next knappen til å lage et nytt vindu hele tiden? Lenke til kommentar
fdredk Skrevet 3. november 2005 Forfatter Del Skrevet 3. november 2005 Jeg vil bare legge til at jeg fant et par interesante poster på nett: Gnome Druid for GTK? GTK Wizard? GtkAssistant Noen som vet noe mer om dette? Lenke til kommentar
dabear Skrevet 3. november 2005 Del Skrevet 3. november 2005 Det jeg prøver å finne ut av er hvordan jeg skal lage en "veileder". Et program som inneholder flere steg. 5100271[/snapback] Tilbakeknappen bugger litt, men slik kan du fks gjøre det: #!/usr/bin/python # -*-encoding: iso-8859-1-*- import os,pygtk pygtk.require('2.0') import gtk class NextDialog(gtk.Window): def create_bbox(self, horizontal=True, title=None, spacing=0, layout=gtk.BUTTONBOX_SPREAD): frame = gtk.Frame(title) if horizontal: bbox = gtk.HButtonBox() else: bbox = gtk.VButtonBox() bbox.set_border_width(5) bbox.set_layout(layout) bbox.set_spacing(spacing) frame.add(bbox) button = gtk.Button(stock='gtk-go-back') button.connect('clicked', self.changeText, 'back') bbox.add(button) button = gtk.Button(stock='gtk-quit') button.connect('clicked', lambda *w: gtk.main_quit()) bbox.add(button) button = gtk.Button(stock='gtk-go-forward') button.connect('clicked', self.changeText) bbox.add(button) return frame def __init__(self, parent=None): # Create the toplevel window gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.counter = 0 self.texts = [ 'Dette er tekst 1', 'Velkommen til text 2', 'tekst 3' ] self.set_title(self.__class__.__name__) self.set_border_width(10) main_vbox = gtk.VBox() self.add(main_vbox) self.label = gtk.Label(self.texts[self.counter] + '\n') main_vbox.pack_start(self.label, padding=10) frame_horiz = gtk.Frame('Diverse tester..') main_vbox.pack_start(frame_horiz, padding=10) vbox = gtk.VBox() vbox.set_border_width(10) frame_horiz.add(vbox) vbox.pack_start(self.create_bbox(True, 'Test av fram/tilbake:', 40, gtk.BUTTONBOX_SPREAD), padding=0) self.show_all() def changeText(self, obj, go='forward'): if go == 'forward': self.counter +=1 elif go == 'back': self.counter -=1 else: raise Exception try: displayText = self.texts[self.counter] except IndexError: self.counter = 0 displayText = self.texts[self.counter] self.label.set_markup(displayText) #print displayText def main(): NextDialog() gtk.main() if __name__ == '__main__': main() Lenke til kommentar
fdredk Skrevet 4. november 2005 Forfatter Del Skrevet 4. november 2005 Tusen takk for meget godt svar dabear! Eneste minuset jeg kan komme på angående din kode er at det er kun tekst som kan vises. Man kan vell ikke legge noe annet enn teskt i self.label? Feks en box. En veileder innholder gjerne mer enn bare litt tekst på vært steg, og gjerne et par input bokser. Dette lar seg ikke gjøre med en label. Har selv prøvd med en box istede, men hvordan kan jeg gjøre dette da en box ikke har noe set_markup funksjon? Uansett, det var lærerikt å få et så fint svar av deg, takker igjen Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå