チェックボタンは、Checkbutton() メソッドで作成します。
以下のスクリプトでは、ボタンを押すと、チェックボタンの状態によってラベルの表示が変化します。
#!/usr/bin/env python
import Tkinter
def func1():
if val.get():
label.configure(text='checked')
else:
label.configure(text='unchecked')
root = Tkinter.Tk()
val = Tkinter.BooleanVar()
val.set(False)
label = Tkinter.Label(root, text='unchecked')
label.pack()
ch1 = Tkinter.Checkbutton(text = 'check1', variable = val)
ch1.pack()
b = Tkinter.Button(root, text='button', command=func1)
b.pack()
root.mainloop()
if val.get():
val = Tkinter.BooleanVar()
val.set(False)
ch1 = Tkinter.Checkbutton(text = 'check1', variable = val)
ラジオボタンは、Radiobutton() メソッドで作成します。
以下のスクリプトでは、ボタンを押したときにチェックの入っているラジオボタンを調べて、ラベルの表示が変化させています。
#!/usr/bin/env python
import Tkinter
def func1():
if val.get() == 0:
label.configure(text='radio 0')
else:
label.configure(text='radio 1')
root = Tkinter.Tk()
val = Tkinter.IntVar()
val.set(0)
label = Tkinter.Label(root, text='radio 0')
label.pack()
r0 = Tkinter.Radiobutton(text = 'radio0', variable = val, value = 0)
r0.pack()
r1 = Tkinter.Radiobutton(text = 'radio1', variable = val, value = 1)
r1.pack()
b = Tkinter.Button(root, text='button', command=func1)
b.pack()
root.mainloop()
val = Tkinter.IntVar()
val.set(0)
r0 = Tkinter.Radiobutton(text = 'radio0', variable = val, value = 0)
ダイアログを作成するには、tkMessageBox モジュールのメソッドを使用します。
askokcancel()
askquestion()
askretrycancel()
askyesno()
showerror()
showinfo()
showwarning()
#!/usr/bin/env python
import Tkinter
import tkMessageBox
def showDialog():
ret = tkMessageBox.askokcancel(title = 'AskOkCancel Dialog', message = 'Press OK or CANCEL')
if ret:
label.configure(text='OK pressed')
else:
label.configure(text='CANCEL pressed')
root = Tkinter.Tk()
label = Tkinter.Label(root, text='press button')
label.pack()
button = Tkinter.Button(root, text='Show', command = showDialog)
button.pack()
root.mainloop()
import tkMessageBox
ret = tkMessageBox.askokcancel(title = 'AskOkCancel Dialog', message = 'Press OK or CANCEL')
ファイルを読み込むためには tkFileDialog モジュールの askopenfilename() メソッド、
ファイル保存用には asksaveasfilename() メソッドを使用します。
以下のスクリプトでは、画像ファイルを読み込んで表示しています。
#!/usr/bin/env python
import os
import Tkinter
import tkFileDialog
path = '/home/abe'
def loadpic():
global picdata, path
filename = tkFileDialog.askopenfilename(filetypes = [('Image Files', ('.gif', '.ppm'))], initialdir = path)
if filename != '':
path = os.path.dirname(filename)
picdata = Tkinter.PhotoImage(file = filename)
label.configure(image = picdata)
root = Tkinter.Tk()
picdata = Tkinter.PhotoImage(width = 64, height = 64)
label = Tkinter.Label(root, image = picdata)
label.pack()
b = Tkinter.Button(root, text = 'Load', command = loadpic)
b.pack()
root.mainloop()
global picdata, path
filename = tkFileDialog.askopenfilename(filetypes = [('Image Files', ('.gif', '.ppm'))], initialdir = path)
filetypes = [('Image Files', ('.gif', '.ppm'))]
initialdir = path
if filename != '':
path = os.path.dirname(filename)
picdata = Tkinter.PhotoImage(file = filename)
label.configure(image = picdata)
picdata = Tkinter.PhotoImage(width = 64, height = 64)
label = Tkinter.Label(root, image = picdata)
メニューは、Menu() メソッドによって作成します。
#!/usr/bin/env python
import sys
import Tkinter
def func1():
label.configure(text='Menu 1 selected', bg = col.get())
def func2():
label.configure(text='Menu 2 selected', bg = col.get())
root = Tkinter.Tk()
menubar = Tkinter.Menu(root)
root.configure(menu = menubar)
submenu1 = Tkinter.Menu(menubar, tearoff = False)
submenu2 = Tkinter.Menu(menubar, tearoff = False)
menubar.add_cascade(label = 'Submenu1', underline = 0, menu = submenu1)
menubar.add_cascade(label = 'Submenu2', underline = 0, menu = submenu2)
submenu1.add_command(label = 'Menu 1', under = 0, command = func1)
submenu1.add_command(label = 'Menu 2', under = 0, command = func2)
submenu1.add_separator
submenu1.add_command(label = 'Exit', under = 0, command = sys.exit)
col = Tkinter.StringVar()
col.set('#ff0000')
submenu2.add_radiobutton(label = 'Red', variable = col, value = '#ff0000')
submenu2.add_radiobutton(label = 'Green', variable = col, value = '#00ff00')
submenu2.add_radiobutton(label = 'Blue', variable = col, value = '#0000ff')
label = Tkinter.Label(root, text='nothing', bg = col.get())
label.pack()
root.mainloop()
menubar = Tkinter.Menu(root)
root.configure(menu = menubar)
submenu1 = Tkinter.Menu(menubar, tearoff = False)
submenu2 = Tkinter.Menu(menubar, tearoff = False)
menubar.add_cascade(label = 'Submenu1', underline = 0, menu = submenu1)
menubar.add_cascade(label = 'Submenu2', underline = 0, menu = submenu2)
submenu1.add_command(label = 'Menu 1', under = 0, command = func1)
submenu1.add_command(label = 'Menu 2', under = 0, command = func2)
submenu1.add_separator
submenu1.add_command(label = 'Exit', under = 0, command = sys.exit)
col = Tkinter.StringVar()
col.set('#ff0000')
submenu2.add_radiobutton(label = 'Red', variable = col, value = '#ff0000')
submenu2.add_radiobutton(label = 'Green', variable = col, value = '#00ff00')
submenu2.add_radiobutton(label = 'Blue', variable = col, value = '#0000ff')
Canvas に表示された図形を保存するには、Canvas の postscript() メソッドを使用します。
以下のスクリプトでは、Save ボタンを押すと表示されている図形が tmp.ps に保存されます。
#!/usr/bin/env python
import Tkinter
def saveImage():
c.postscript(file = 'tmp.ps')
root = Tkinter.Tk()
c = Tkinter.Canvas(root, width = 200, height = 200)
c.pack()
c.create_oval(20, 20, 150, 150, fill = '#ff0000')
c.create_oval(100, 100, 180, 180, fill = '#00ff00')
b = Tkinter.Button(root, text='Save', command=saveImage)
b.pack()
root.mainloop()
c.postscript(file = 'tmp.ps')