Nieuws:

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

Auteur Topic: Leuk python-programma voor workshop  (gelezen 4119 keer)

Offline Double12

  • Lid
Leuk python-programma voor workshop
« Gepost op: 2009/03/24, 22:27:33 »
Op de install party in Den Haag willen we mogelijk een workshop Python geven. Het is natuurlijk leuk als mensen met een aantal basiscommando's (printen op het scherm, functies/methods, if-then, loops) toch al een leuk programmaatje kunnen schrijven. De workshop moet namelijk niet veel langer duren dan een uur.

Wat is hiervoor een leuk idee? Mogelijk zit er in zo'n programmaatje code die ze nog niet geleerd hebben (bijv. van een library), maar die ze gewoon kunnen kopiëren in hun editor en licht kunnen modificeren om er een beetje mee te spelen.

Offline charclo

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #1 Gepost op: 2009/03/25, 08:38:05 »
Hallo,

Ik zou zeker eens tonen hoe je venster (met gtk of wxpython of pyqt?) kan tonen met een knopje op. Als je op dit knopje drukt kan er dan een tekst "hello world" te voorschijn komen ofzo. Best ook eens tonen hoe je een gui maakt met glade want dit kan heel verwarrend zijn in het begin.

Ik denk dat de meeste mensen (ook niet-programmeurs) het wel interessant zullen vinden als ze snel resultaat zien van wat ze doen.
Ik weet niet of je een kandidaat hebt om de programmaatjes te schrijven maar anders wil ik wel een klein programmaatje maken.

Spijtig dat het in Den Haag is, anders kon ik eens komen kijken. Is er geen Release Party in België dit jaar?

Groeten
« Laatst bewerkt op: 2009/03/25, 08:49:18 door charclo »
HP Pavilion dv6660eb - Intel Core 2 Duo T7250 2 GHz - 2 GB ram - Nvidia GeForce 8400M GS 128 MB --> Dualboot Ubuntu en Windows Vista
P4 2.6 GHz - 1GB ram - NVIDIA GS7600 - 20 inch Benq widescreen --> Dualboot Ubuntu en Windows XP

Offline JvH

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #2 Gepost op: 2009/03/25, 08:52:34 »
Je zou ze evt. het rijmpje '99 bottles of beer' kunnen laten schrijven. Ik neem aan dat daar ook wel een Nederlandse variant van is.

Citaat
99 bottles of beer on the wall,
99 bottles of beer!
Take one down, and pass it around
98 bottles of beer on the wall!

98 bottles of beer on the wall,
...

No more bottles of beer on the wall,
no more bottles of beer!
Go to the store, and buy some more,
99 bottles of beer on the wall!

99 bottles of beer on the wall,
...

Offline Double12

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #3 Gepost op: 2009/03/25, 09:18:58 »
@charclo: Leuk idee! Ik moet dan eens uitzoeken welke toolkit de makkelijkste en kortste code oplevert: PyQt, wxPython, pygtk of PyFLTK.
Er is trouwens ook een install party in Hasselt (BE), http://forum.ubuntu-nl.org/ubuntu-nl/ubuntu-9-04-release-party-hasselt-belgie/

@JvH: Ja, dat is inderdaad ook een goed idee. Dat voorbeeld kunnen we misschien al vrij snel gebruiken bij het uitleggen van loops.

Re: Leuk python-programma voor workshop
« Reactie #4 Gepost op: 2009/03/25, 10:01:46 »
@charclo: Leuk idee! Ik moet dan eens uitzoeken welke toolkit de makkelijkste en kortste code oplevert: PyQt, wxPython, pygtk of PyFLTK.

In PyGTK kunt ge een vensterke met knop en label maken met minder dan tien regeltjes. Als ge wilt, geef ik een voorbeeld.

Offline JvH

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #5 Gepost op: 2009/03/25, 10:21:10 »
Wat mss ook nog een leuk idee is icm een grafische interface is een eenvoudige rekenmachine. Maar mss is dat ook wel weer iets te hoog gegrepen...

lariek99

  • Gast
Re: Leuk python-programma voor workshop
« Reactie #6 Gepost op: 2009/03/25, 11:05:54 »
Hoi Nunslaughter
Ik zou het zéér waarderen als je een voorbeeldje zou willen geven met pyGTK.
Groetjes lariek

Re: Leuk python-programma voor workshop
« Reactie #7 Gepost op: 2009/03/25, 11:29:20 »
Hoi Nunslaughter
Ik zou het zéér waarderen als je een voorbeeldje zou willen geven met pyGTK.
Groetjes lariek

Ok, hier een klein voorbeeldje dat een tekst in een label laat zien als ge op de knop klikt:

#!/usr/bin/env python

# Importeer de benodigde modules
import pygtk
pygtk.require('2.0')
import gtk

def button_clicked(widget):
    # Deze functie word aangeroepen als er op de knop is geklikt
    # Zet een tekst in de label
    label.set_text("Button clicked")

if __name__ == "__main__":
    # Maak een venster en zet deze als toplevel
    # Ook mogelijk: gtk.WINDOW_POPUP
    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    # Geef het venster een breedte en hoogte
    window.resize(150, 50)
    # Verbind het sluiten (kruisje) met het stoppen van de main loop
    window.connect('delete-event', gtk.main_quit)

    # Maak een verticale container
    vbox = gtk.VBox()

    # Maak een label en zet deze in de container
    label = gtk.Label()
    vbox.pack_start(label, padding=4)

    # Maak een knop met een tekst op
    button = gtk.Button("Click me!")
    # Verbind het klikken op de knop
    button.connect('clicked', button_clicked)
    # Zet de knop in de container
    vbox.pack_start(button)

    # Voeg de container toe aan het venster
    window.add(vbox)
    # Laat alle widgets van window zien
    window.show_all()

    # Start de main loop
    gtk.main()
« Laatst bewerkt op: 2009/03/25, 12:10:41 door Nunslaughter »

Offline charclo

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #8 Gepost op: 2009/03/25, 11:55:38 »
@ Nunslaughter, dat ziet er goed uit, enkel zou ik geen code onder if __name__ == "__main__": zetten maar dit in een functie gieten. Enkel gtk.main() laten staan dus.
Ook kan je beter wat commentaar geven bij elke regel wat hij precies doet.

En ik denk dat er naast dit voorbeeld ook zeker een voorbeeld met glade moet komen. (Ik wou dat ik naar zo'n workshop kon gegaan zijn toen ik python begon te leren.)

en Double12, nog een laatste tip, laat de deelnemers van de workshop niet gewoon tekst kopieren maar alles zelf intypen. Op die manier leren ze veel meer en krijgen ze al een eerste kennismaking met de indention enzo.

Ik zal ook eens kijken voor die install party van Hasselt.
HP Pavilion dv6660eb - Intel Core 2 Duo T7250 2 GHz - 2 GB ram - Nvidia GeForce 8400M GS 128 MB --> Dualboot Ubuntu en Windows Vista
P4 2.6 GHz - 1GB ram - NVIDIA GS7600 - 20 inch Benq widescreen --> Dualboot Ubuntu en Windows XP

Re: Leuk python-programma voor workshop
« Reactie #9 Gepost op: 2009/03/25, 12:02:20 »
@ Nunslaughter, dat ziet er goed uit, enkel zou ik geen code onder if __name__ == "__main__": zetten maar dit in een functie gieten. Enkel gtk.main() laten staan dus.

Ja, misschien wel. Ik zou ook al direct met een klasse kunnen beginnen, maar vaak ziet ge dat zulke kleine voorbeeldjes gewoon het maken van het venster onder de if __name__ == "__main__": zetten.


Ook kan je beter wat commentaar geven bij elke regel wat hij precies doet.

Zal ik zo meteen aanpassen.

En ik denk dat er naast dit voorbeeld ook zeker een voorbeeld met glade moet komen.

Daar was ik ook aan aan het denken, maar weet niet of dit zo een goed idee is. Nu word alles nog gedaan met libglade, maar met Glade 3.6 hebt ge de keuze om ook met gtkbuilder te werken, die veel meer opties en widgets bied. Deze zit standaard in Jaunty. Het probleem met gtkbuilder is dat sommige widgets pas vanaf gtk 2.16 beschikbar zijn, dat wil dus zeggen dat op een oudere versie (bijvoorbeeld die van Intrepid en ouder), deze widgets niet zullen werken.

Ik zal ook eens kijken voor die install party van Hasselt.

Ik zal er waarschijnlijk ook zijn :).

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Leuk python-programma voor workshop
« Reactie #10 Gepost op: 2009/03/25, 12:27:33 »
In PyQt is het ook erg eenvoudig.
En ik zou de mensen met een grafische designer laten werken zoals Qt Designer (veel makkelijker)

Zie bv. http://www.rkblog.rk.edu.pl/w/p/introduction-pyqt4/
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline charclo

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #11 Gepost op: 2009/03/25, 13:48:27 »
Ja, misschien wel. Ik zou ook al direct met een klasse kunnen beginnen, maar vaak ziet ge dat zulke kleine voorbeeldjes gewoon het maken van het venster onder de if __name__ == "__main__": zetten.

Een klasse zou ik  niet direct gebruiken maar toch zeker wel een functie, dit maakt het veel overzichtelijker. En voor beginners kan dit wel tellen.

Daar was ik ook aan aan het denken, maar weet niet of dit zo een goed idee is. Nu word alles nog gedaan met libglade, maar met Glade 3.6 hebt ge de keuze om ook met gtkbuilder te werken, die veel meer opties en widgets bied. Deze zit standaard in Jaunty. Het probleem met gtkbuilder is dat sommige widgets pas vanaf gtk 2.16 beschikbar zijn, dat wil dus zeggen dat op een oudere versie (bijvoorbeeld die van Intrepid en ouder), deze widgets niet zullen werken.

Van gtk-builder had ik nog niet gehoord, maar wat ik zie na enig gegoogel is dat je nog steeds glade gebruikt. Ik zal er eens wat meer over opzoeken. Als gtk-builder in de oudere versies van ubuntu niet werkt zou ik zeker glade (libglade) als voorbeeldje gebruiken.
HP Pavilion dv6660eb - Intel Core 2 Duo T7250 2 GHz - 2 GB ram - Nvidia GeForce 8400M GS 128 MB --> Dualboot Ubuntu en Windows Vista
P4 2.6 GHz - 1GB ram - NVIDIA GS7600 - 20 inch Benq widescreen --> Dualboot Ubuntu en Windows XP

Re: Leuk python-programma voor workshop
« Reactie #12 Gepost op: 2009/03/25, 14:00:05 »
Van gtk-builder had ik nog niet gehoord, maar wat ik zie na enig gegoogel is dat je nog steeds glade gebruikt. Ik zal er eens wat meer over opzoeken. Als gtk-builder in de oudere versies van ubuntu niet werkt zou ik zeker glade (libglade) als voorbeeldje gebruiken.

Ja, vanaf versie 3.5 van Glade kunt ge bij het opstarten kiezen in wat formaat ge uw programma wilt hebben.

Misschien wel, maar gtkbuilder heeft zoveel meer widgets in Glade. Zoals een volume button, entry completion, status icon, textbuffer, liststore, treestore etc. En niet te vergeten, een heel handige editor om treeviews mee te maken, wat met libglade altijd met de hand in de code moest gedaan worden.

Ik heb ook even gekeken. Alleen gtkMenuBar en gtkMenu zijn pas bruikbaar vanaf 2.16 met gtkbuilder, de rest werkt gewoon.

Ik denk dat het niet meer de moeite is om nu nog libglade aan te leren. Er zijn zoveel meer mogelijkheden met Glade + gtkbuilder.
Ik heb wel nog maar een paar kleine stukjes testcode geschreven, maar de code is ook simpeler.

Ik zou zeggen: compileer eens de laatste Glade en sta versteld.

Offline Double12

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #13 Gepost op: 2009/03/25, 14:03:12 »
Je hoef niet per se Glade te gebruiken in GTK+. Je kunt ook gewoon zelf een UI programmeren en GtkUiManager gebruiken voor menubalken en iconenbalken. GtkUiManager laadt definities voor die balken uit een XML-bestand. Zo werkt het tenminste in C, ik weet niet of het in PyGTK ook zo werkt.

@profoX: PyQt lijkt me op zich wel wat. Zelf ben ik meer van het zelf programmeren van de GUI, maar je hebt me een tijd geleden verteld welke voordelen QtDesigner allemaal biedt.
Hoewel ik zelf meestal programmeer in een editor, lijkt het me handig om voor de workshop een IDE te gebruiken. Is er een IDE waar QtDesigner automatisch mee integreert, zodat mensen die het proberen niet hoeven te schakelen tussen heel veel programma's?

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Leuk python-programma voor workshop
« Reactie #14 Gepost op: 2009/03/25, 17:48:02 »
Er is natuurlijk QtCreator... maar op dit moment ondersteunt die (nog) geen Python.
KDevelop uit KDE 4 bevat misschien (ben niet zeker) ook Qt Designer,
maar aangezien dat allemaal niet "officieel" door Qt Software ontwikkeld wordt (of in samenwerking met)
zou ik Qt Designer eerder gewoon als een apart programma gebruiken op dit moment.
(Als QtCreator ooit Python ondersteunt zou ik wel QtCreator aanraden als IDE voor PyQt development)
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline Double12

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #15 Gepost op: 2009/04/08, 09:41:18 »
Welke pakketten moet je installeren zodat je wxWindows-interfaces kunt maken in SPE? Het lijkt standaard te worden meegeinstalleerd, maar toch niet helemaal.

Offline JanClaeys

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #16 Gepost op: 2009/04/10, 01:56:08 »
@ Nunslaughter, dat ziet er goed uit, enkel zou ik geen code onder if __name__ == "__main__": zetten maar dit in een functie gieten. Enkel gtk.main() laten staan dus.
FWIW: voor een simpel script is het perfect normaal om dat zonder een extra functie te doen, en zelfs die if __name__ == "__main__": is in feite overbodig (je moet het niet moeilijker maken dan nodig).  En het is een goed voorbeeld om te tonen hoe je makkelijk dingen kan "refactoren" om ze herbruikbaar te maken later.
Jan Claeys
Ubuntu-nl IRC team - Ubuntu-be LoCoTeam Contact

Offline charclo

  • Lid
Re: Leuk python-programma voor workshop
« Reactie #17 Gepost op: 2009/04/10, 15:57:24 »
@ Nunslaughter, dat ziet er goed uit, enkel zou ik geen code onder if __name__ == "__main__": zetten maar dit in een functie gieten. Enkel gtk.main() laten staan dus.
FWIW: voor een simpel script is het perfect normaal om dat zonder een extra functie te doen, en zelfs die if __name__ == "__main__": is in feite overbodig (je moet het niet moeilijker maken dan nodig).  En het is een goed voorbeeld om te tonen hoe je makkelijk dingen kan "refactoren" om ze herbruikbaar te maken later.

Ik zou gewoon het een of het ander kiezen, ofwel if __name__ == "__main__": weglaten ofwel laten staan en je eigenlijke logica in een functie zetten.
HP Pavilion dv6660eb - Intel Core 2 Duo T7250 2 GHz - 2 GB ram - Nvidia GeForce 8400M GS 128 MB --> Dualboot Ubuntu en Windows Vista
P4 2.6 GHz - 1GB ram - NVIDIA GS7600 - 20 inch Benq widescreen --> Dualboot Ubuntu en Windows XP