Professional Documents
Culture Documents
Why GUI?
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
$
$
$
$
$
$
$
$
$
python
python
python
python
python
python
python
python
python
dosomething.py
dosomething.py
dosomething.py
dosomething.py
dosomething.py
dosomething.py
dosomething.py
dosomething.py
dosomething.py
file1
file2
file3
file4
file5
file6
file7
file8
file9
Why GUI?
Why GUI?
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
lyra:~
$ python doisosurface.py 50
$
$
$
$
$
$
$
$
$ python doisosurface.py 900
$
$
$
$
$
$
$
$
$ python doisosurface.py 1250
$
$
Why GUI?
Tkinter
import Tkinter
The expressions
root = Tk()
def say_hi():
print "Hello Class"
root = Tk()
root.mainloop()
root = Tk()
root = Tk()
btn = Button(root, text="Quit", command=root.quit)
btn.pack()
someotherclass.value = 10
10
Root Window
(Tk())
Frame
Button
Button
Root
Window
Frame
...
Button
11
Frame
Button
Button
Button
...
...
12
Your script
Command Function
(aka Event Handler)
13
Widgets
Widgets
14
Button
Canvas
Checkbutton
Entry
Frame
Label
Listbox
Menu
Menubutton
15
Message
Radiobutton
Scale
Scrollbar
Text
Toplevel
16
Widgets
Widgets
17
Widgets
Widgets
>>> w.pack()
18
19
20
Button
...
text
command
Canvas
tfCanvas.create_line(xs,ys,xe,ye, fill=black)
21
create_arc
create_bitmap
create_polygon
...
Checkbutton
22
23
24
Checkbutton
Entry
e = Entry(root, width=55)
e.pack()
def say_hello():
print Hello, var.get()
def say_hello():
print e.get()
b = Button(root,text="Hello", command=say_hello)
b.pack()
qb = Button(root, text="Quit", command=root.quit)
qb.pack()
root.mainloop()
25
Label
26
Listbox
root = Tk()
lb.pack()
root.mainloop()
def say_hello():
print str(lb.curselection())
b = Button(root,text="Hello", command=say_hello)
b.pack()
qb = Button(root, text="Quit", command=root.quit)
qb.pack()
root.mainloop()
27
28
Radiobutton
root = Tk()
MODES = [
("Monochrome", "1"),
("Grayscale", "L"),
("True color", "RGB"),
("Color separation", "CMYK"),
]
v = StringVar()
v.set("L") # initialize
for text, mode in MODES:
b = Radiobutton(root, text=text, variable=v, value=mode)
b.pack(anchor=W)
v = IntVar()
Radiobutton(root, text="One", variable=v, value=1).pack(anchor=W)
Radiobutton(root, text="Two", variable=v, value=2).pack(anchor=W)
def say_hello():
print v.get()
b = Button(root,text="Hello", command=say_hello)
b.pack()
qb = Button(root, text="Quit", command=root.quit)
qb.pack()
root.mainloop()
29
Scale
30
Text
root = Tk()
def dragged(event):
print s.get()
def get_value():
v = t.get(1.0,END)
print v
def get_value():
print s.get()
root.mainloop()
31
32
Text
Example 2
Toplevel
root = Tk()
root = Tk()
tl = Toplevel()
def execute():
chunk = t.get(1.0,END)
obj = compile(chunk, '<string>', 'exec')
exec obj
def get_value():
v = t.get(1.0,END)
print v
root.mainloop()
33
Not discussed
34
Frame
Menu
Menubutton
Message
Scrollbar
35
36
Event attributes
event.widget
event.x
event.y
event.x_root
event.y_root
event.char
event.keysym
event.keycode
event.num
event.width
event.height
event.type
widget.bind(event, eventhandler)
#
#
#
#
#
#
#
#
#
#
#
37
38
Event types
def eventtest(event):
print "Mouse: " , str( (event.x,event.y) )
tl = Toplevel()
t = Text(tl, width=100, height=50)
t.pack()
t.bind("<Button-1>", eventtest)
def get_value():
v = t.get(1.0,END)
print v
39
40
Event types
<Return>
Bindings
41
42
Bindings
root = Tk()
def eventtest(event):
print "Mouse: " , str( (event.x,event.y) )
http://www.pythonware.com/library/tkinter/
introduction/index.htm
tl = Toplevel()
t = Text(tl, width=100, height=50)
t.pack()
root.bind_all("<Enter>", eventtest)
def get_value():
v = t.get(1.0,END)
print v
b = Button(root, text="Get Value", fg="red", command=get_value)
b.pack()
qb = Button(root, text="Quit", command=root.quit)
qb.pack()
root.mainloop()
43
44