Python 3/GUI
Tkinter
[muokkaa | muokkaa wikitekstiä]Tkinter perustuu Tcl-nimisen ohjelmointikielen Tk-käyttöliittymäkirjastoihin. Tkinter kuuluu Python-tulkin oletuspaketteihin. Esimerkki:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import tkinter
class HelloWorld:
def __init__(self):
window = tkinter.Tk()
# ikkunan otsikko
window.title("Hei")
# Ikkunan koko leveys x korkeus
window.geometry("200x150")
# teksti
hello = tkinter.Label(window, text = "Hei maailma!")
# lisätään teksti ikkunaan
hello.pack()
# luodaan ikkuna
window.mainloop()
if __name__ == "__main__":
HelloWorld()
Painike
[muokkaa | muokkaa wikitekstiä]Painikkeen luominen Tkinterillä. Esimerkki:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import tkinter
class HelloWorld:
def __init__(self):
window = tkinter.Tk()
window.title("Hei")
window.geometry("200x150")
# luodaan painike
button = tkinter.Button(window, text = "Hei!", command = self.hello)
# lisätään painike ikkunaan
button.pack()
window.mainloop()
def hello(self):
print ("Hei!")
if __name__ == "__main__":
HelloWorld()
Valikko
[muokkaa | muokkaa wikitekstiä]Valikon luominen Tkinterillä. Esimerkki:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import tkinter
import sys
class HelloWorld:
def __init__(self):
window = tkinter.Tk()
window.title("Hei")
window.geometry("200x150")
menubar = tkinter.Menu(window)
window.config(menu=menubar)
filemenu = tkinter.Menu(menubar)
filemenu.add_command(label="Avaa", command=self.open)
filemenu.add_separator()
filemenu.add_command(label="Lopeta", command=self.quit)
menubar.add_cascade(label="Tiedosto", menu=filemenu)
window.mainloop()
def open(self):
print ("Valitsit avaa")
def quit(self):
print ("Valitsit lopeta")
sys.exit(0)
if __name__ == "__main__":
HelloWorld()
Syötekenttä
[muokkaa | muokkaa wikitekstiä]Syötekentän luominen Tkinterillä. Esimerkki:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import tkinter
class HelloWorld:
def __init__(self):
window = tkinter.Tk()
window.title("Hei")
window.geometry("200x150")
self.text = tkinter.Entry(window)
self.text.pack()
button = tkinter.Button(window, text = "Tulosta", command = self.print_text)
button.pack()
window.mainloop()
def print_text(self):
print (tkinter.Entry.get(self.text))
if __name__ == "__main__":
HelloWorld()
PyGTK
[muokkaa | muokkaa wikitekstiä]pygtk on muuttunut hiukan python 3:n myötä. [Lisätietoa]. [Tutoriaali].
PyGTK toimii Linuxilla, Windowsilla ja Mac OS X:llä. Python 2 esimerkki, ei testattu python 3:lla:
import pygtk
pygtk.require("2.0")
import gtk
class HelloWorld:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Hei")
self.window.set_size_request(200, 150)
hello = gtk.Label("Hei maailma!")
self.window.add(hello)
hello.show()
self.window.show()
gtk.main()
if __name__ == "__main__":
HelloWorld()
Painike
[muokkaa | muokkaa wikitekstiä]Painikkeen luominen PyGTKlla. Esimerkki:
import pygtk
pygtk.require("2.0")
import gtk
class HelloWorld:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Hei")
self.window.set_size_request(200, 150)
self.button = gtk.Button("Klikkaa")
self.button.connect("clicked", self.button_press, "Klikkaa")
self.window.add(self.button)
self.button.show()
self.window.show()
gtk.main()
def button_press(self, widget, data):
print "Painoit %s painiketta" % data
if __name__ == "__main__":
HelloWorld()
Valikko
[muokkaa | muokkaa wikitekstiä]Valikon luominen PyGTKlla. Esimerkki:
import pygtk
pygtk.require('2.0')
import gtk
class MenuExample():
def __init__(self):
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.set_title("Hei")
win.set_size_request(200, 150)
menubar = gtk.MenuBar()
file_item = gtk.MenuItem("_Tiedosto")
file_item_sub = gtk.Menu()
new = gtk.MenuItem("_Uusi")
quit = gtk.MenuItem("_Lopeta")
file_item_sub.append(new)
file_item_sub.append(quit)
file_item.set_submenu(file_item_sub)
menubar.append(file_item)
new.connect("activate", self.menu_press, "uusi")
quit.connect("activate", self.menu_press, "lopeta")
vbox = gtk.VBox()
vbox.pack_start(menubar, False, True, 0)
win.add(vbox)
win.show_all()
gtk.main()
def menu_press(self, widget, data):
print "Painoit %s" % data
if __name__ == "__main__":
MenuExample()
wxPython
[muokkaa | muokkaa wikitekstiä]wxPython on erikseen ladattava kirjasto. Kirjastosta on vastikään saatu valmiiksi myös python 3 yhteensopiva versio. Lisätietoa: [http://wxpython.org/]
wxPython toimii Windowsilla, Linuxilla ja Mac OS X:llä. Python 2 esimerkki, ei testattu python 3:lla:
import wx
class TestFrame(wx.Frame):
def __init__(self, parent, ID, title):
wx.Frame.__init__(self, parent, -1, title, pos=(0, 0), size=(320, 240))
panel = wx.Panel(self, -1)
text = wx.StaticText(panel, -1, "Test", wx.Point(10, 5), wx.Size(-1, -1))
class TestApp(wx.App):
def OnInit(self):
frame = TestFrame(None, -1, "Hello, world!")
self.SetTopWindow(frame)
frame.Show(True)
return True
if __name__ == '__main__':
app = TestApp(0)
app.MainLoop()
Qt ja Python
[muokkaa | muokkaa wikitekstiä]Pythonille on Qt:stä kaksi eri versiota, PyQT ja PySide. PyQT on Phil Thompsonin (Riverbank Computing) kirjoittama jo QT 2.x ajalta saakka oleva kirjasto. PySide sai alkunsa 2009 kun Qt:n silloinen omistaja Nokia halusi LGPL-lisensoidun version kirjastosta. PyQT on kaksoislisensoitu, GPL tai kaupallinen lisenssi.
Aiheesta muualla
[muokkaa | muokkaa wikitekstiä]- Python-kielisen_ohjelmoinnin_perusteet (Wikiopiston opintopiirin opiskeluohjeita)
Johdanto: | |
---|---|
Tietotyypit ja tietorakenteet: |
Luvut - Merkkijonot - Lista - Monikko (tuple) - Sanakirja - Joukko (set) |
Ohjausrakenteet | |
Muut kielen rakenteet: |
Moduuli - Luokka - Funktio - Virheidenhallinta - Tiedosto |
Graafinen käyttöliittymä: | |
Harjoitustehtäviä: | |
Lisätiedot ja lähteet: |