Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: PyGTK, functions en strings.  (gelezen 1916 keer)

PyGTK, functions en strings.
« Gepost op: 2009/05/30, 19:29:37 »
Hallo,

Ben bezig met leren van PyGTK.
Lukt al aardig. Ben eerder al eens begonnen met python. Allen de basis.

Is er ook een manier om de string van een variable aan te passen binnen een function, en dat die dan ook buiten de function verandert is, ZONDER de functie return te gebruiken?

Voorbeeld:
string = "a"
def voorbeeld(string):
    string = "b"
voorbeeld(string)
print string
en dat er dan b uitkomt en niet a.
« Laatst bewerkt op: 2009/05/30, 19:41:42 door rick.blub »
Volop Ubuntu 12.04 gebruiker.

Offline Ronnie

  • Lid
    • ronnie.vd.c
Re: PyGTK, functions en strings.
« Reactie #1 Gepost op: 2009/05/30, 19:42:38 »
Ja er is een mogelijkheid, maar gebruik deze alleen als het echt niet anders mogelijk is. Vaak kun je global variabelen voorkomen door met klassen te programmeren, en dan een klasse object door te geven.

string = 'a'

def voorbeeld(new_string):
     global string
     string = new_string

voorbeeld('b')

print string
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Documentatie Terminal

Re: PyGTK, functions en strings.
« Reactie #2 Gepost op: 2009/05/30, 19:48:59 »
Zo ver over die classen ging mijn basis niet.
Hoe bedoel je dat?
Volop Ubuntu 12.04 gebruiker.

Offline Ronnie

  • Lid
    • ronnie.vd.c
Re: PyGTK, functions en strings.
« Reactie #3 Gepost op: 2009/05/30, 20:05:36 »
Programmeren met klassen is niet 123 uit te leggen, maar zoek maar eens op OOP (object oriented programming)

In het kort komt het hier op neer:
class SomeClass(object):
    def __init__(self, string):
        self.string = string
       
    def change_string(self, new_string):
        self.string = new_string
       
string1 = SomeClass('a')
print string1.string
string1.string = 'b'
print string1.string
string1.change_string('c')
print string1.string
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Documentatie Terminal

Re: PyGTK, functions en strings.
« Reactie #4 Gepost op: 2009/05/30, 20:50:50 »
Ik snap wat je daar liet zien(, en dat is best wat voor de kennis van~ op mijn niveau)
Alleen gaat het erom dat als ik in het grafische gedeelte op een knop druk hij al eerder opgegeven getallen moet doorrekenen. En hoe ik die getallen dan weer uit die function krijg is mij anders een raadsel. Als daar een andere oplossing op is vind ik het ook goed ;)
Volop Ubuntu 12.04 gebruiker.

Offline Ronnie

  • Lid
    • ronnie.vd.c
Re: PyGTK, functions en strings.
« Reactie #5 Gepost op: 2009/05/30, 21:25:12 »
Ik weet niet precies wat je bedoeld en pyGTK is voor mij al weer een tijd geleden. Maar als je even een voorbeeldje (code) kunt geven, dan kijk ik of ik je verder kan helpen
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Documentatie Terminal

Re: PyGTK, functions en strings.
« Reactie #6 Gepost op: 2009/05/30, 21:59:51 »
Ik had dit:
...
def btw_bij(self, widget, o_bedrag, btw_t):
if btw_t == "a":
n_bedrag = o_bedrag * 1.06
elif btw_t == "b":
n_bedrag = o_bedrag * 1.19
...
self.b_btw_bij_a.connect("clicked", self.btw_bij, bedrag, "a")
self.b_btw_bij_b.connect("clicked", self.btw_bij, bedrag, "b")
...

Wat mij tot de vraag leide.
Met dat wat jij in Antwoord #1 vertelde:
...
def btw_bij(self, widget, o_bedrag, btw_t):
if btw_t == "a":
n_bedrag = o_bedrag * 1.06
elif btw_t == "b":
n_bedrag = o_bedrag * 1.19
global bedrag
bedrag = n_bedrag
...
self.b_btw_bij_a.connect("clicked", self.btw_bij, bedrag, "a")
self.b_btw_bij_b.connect("clicked", self.btw_bij, bedrag, "b")
...

Werkte dat wel :D

EDIT:
Toelichting:
Als je op knop A drukt moet er bij het bedrag 6% btw bij.
Als je op knop B drukt moet er bij het bedrag 19% btw bij.
« Laatst bewerkt op: 2009/05/30, 22:02:14 door rick.blub »
Volop Ubuntu 12.04 gebruiker.

Re: PyGTK, functions en strings.
« Reactie #7 Gepost op: 2009/05/30, 22:08:59 »
Met klassen zou dit zoiets kunnen worden:
class BTWProgramma:
    def __init__(self):
        ...
        self.bedrag = 0

        self.b_btw_bij_a.connect("clicked", self.btw_bij, "a")
        self.b_btw_bij_b.connect("clicked", self.btw_bij, "b")

    def btw_bij(self, widget, btw_t):
        if btw_t == "a":
            self.bedrag *= 1.06
        elif btw_t == "b":
            self.bedrag *= 1.19

if __name__ == '__main__':
    app = BTWProgramma
    gtk.main()

Re: PyGTK, functions en strings.
« Reactie #8 Gepost op: 2009/05/30, 22:31:23 »
Geniaal, t'werkt.
Bedankt
Volop Ubuntu 12.04 gebruiker.

Re: PyGTK, functions en strings.
« Reactie #9 Gepost op: 2009/05/31, 09:17:12 »
Pointers.... *zucht*
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Re: PyGTK, functions en strings.
« Reactie #10 Gepost op: 2009/06/06, 17:02:35 »
Sorry, verkeert topic.

Nieuwe vraag:
Kan je ook een knop verbinden met een functie uit een andere class?
Want dat krijg ik nog niet voor mekaar.
« Laatst bewerkt op: 2009/06/06, 17:06:23 door rick.blub »
Volop Ubuntu 12.04 gebruiker.

Re: PyGTK, functions en strings.
« Reactie #11 Gepost op: 2009/06/06, 18:13:54 »
Dat kan zeker.

class Programma:
    def __init__(self):
        # Uw programma initialiseren

        self.button.connect("clicked", button_clicked)

        self.functie = FunctieKlasse()

    def button_clicked(self, widget):
        self.functie.test_functie()

class FunctieKlasse:
    def __init__(self):
        pass

    def test_functie():
        print "Button clicked"