Siirry sisältöön

Python 3/GUI

Wikikirjastosta


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()


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()


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 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()

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()

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 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()

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ä]