
рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди!
рдЯрд┐рдХреНрдЪрд░ рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ (
рдкрд╛рдпрдерди 3.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕реЗ рдЯрд┐рдВрдХрд░ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ )ред Tkinter Tk рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░
Tcl / Tk рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред
рдЯрд┐рдВрдХрд░ рдорд╛рдирдХ рдкрд╛рдпрдерди рд╡рд┐рддрд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рднреА рдХреЛрдб рдкрд╛рдпрдерди 2.x рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ Tkinter рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдо рдорд╛рдирдХ Tkinter
_test () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
import Tkinter Tkinter._test()
рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрди рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП:

рдорд╣рд╛рди, рдЕрдм рдЖрдк рдЯрд┐рдВрдХрд░ рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛
рдмреЗрд╢рдХ, рдпрд╣ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд╣рд╛рдБ рд╣реЛрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
from Tkinter import * root = Tk()
рд╣рд╛рдВ, рд╣рд╛рдВ, рдмрд╕ рдПрдХ рдкрдВрдХреНрддрд┐, рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ
WinAPI (=ред рдЕрдм рдПрдХ рдмрдЯрди рдмрдирд╛рдПрдВ, рдЬрдм рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╛рда рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛:
def Hello(event): print "Yet another hello world" btn = Button(root,
рдпрд╣ рдЖрд╕рд╛рди рд╣реИ, рд╣реИ рдирд╛? рд╣рдо рдмрдЯрди рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред рдХрдИ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдлрд╝реЙрдиреНрдЯ, рдмреЙрд░реНрдбрд░ рдореЛрдЯрд╛рдИ, рдЖрджрд┐ред
рдлрд┐рд░ рд╣рдо рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдирд╛ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ (рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрд╛рдзреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рдорд╛рдЙрд╕ рдмрдЯрди рд╣рдорд╛рд░реЗ рдмреАрдЯреАрдПрди рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдореЗрдирд▓реВрдк () рдЗрд╡реЗрдВрдЯ рд▓реВрдк рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ; рдЬрдм рддрдХ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ, рддрдм рддрдХ рд╣рдорд╛рд░реА рдЦрд┐рдбрд╝рдХреА рдмрд╛рд╣рд░реА рдЙрддреНрддреЗрдЬрдирд╛рдУрдВ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрдЧреАред
рд░реИрдкрд░
рдкреИрдХ () рдлрд╝рдВрдХреНрд╢рди рддрдерд╛рдХрдерд┐рдд рдкреИрдХрд░, рдпрд╛ рд▓реЗрдЖрдЙрдЯ рдкреНрд░рдмрдВрдзрдХ рд╣реИред рд╡рд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдкрд░ рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреИрд╕реЗ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЖрд╡рд░рдг рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреБрд▓ рддреАрди рдкреИрдХрд░реНрд╕ рд╣реИрдВ:
рдкреИрдХ () ред рдореВрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдЬреЗрдЯреНрд╕ рд░рдЦрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕
рд╕рд╛рдЗрдб рд╣реИрдВ, рдлрд┐рд▓ рдХрд░реЗрдВ, рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ ред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
from Tkinter import * root = Tk() Button(root, text = '1').pack(side = 'left') Button(root, text = '2').pack(side = 'top') Button(root, text = '3').pack(side = 'right') Button(root, text = '4').pack(side = 'bottom') Button(root, text = '5').pack(fill = 'both') root.mainloop()
рдЧреНрд░рд┐рдб () ред рдПрдХ рдЧреНрд░рд┐рдб рдкрд░ рд╡рд┐рдЬреЗрдЯреНрд╕ рд░рдЦреЗрдВред рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░:
рдкрдВрдХреНрддрд┐ / рд╕реНрддрдВрдн - рдЧреНрд░рд┐рдб рдореЗрдВ рдкрдВрдХреНрддрд┐ / рд╕реНрддрдВрдн, рдкрдВрдХреНрддрд┐-рд╕реНрддрдВрдн / рд╕реНрддрдВрдн - рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдХрд┐рддрдиреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ / рд╕реНрддрдВрдн рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
from Tkinter import * root = Tk() Button(root, text = '1').grid(row = 1, column = 1) Button(root, text = '2').grid(row = 1, column = 2) Button(root, text = '__3__').grid(row = 2, column = 1, columnspan = 2) root.mainloop()
рдЬрдЧрд╣ () ред рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд╡рд┐рдЧреЗрдЯреНрд╕ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░:
x, y, рдЪреМрдбрд╝рд╛рдИ, рдКрдВрдЪрд╛рдИ ред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
from Tkinter import * root = Tk() Button(root, text = '1').place(x = 10, y = 10, width = 30) Button(root, text = '2').place(x = 45, y = 20, height = 15) Button(root, text = '__3__').place(x = 20, y = 40) root.mainloop()

рдЕрдм рдЯрд┐рдВрдХрд░ рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рд▓рд┐рдЦреЗрдВрдЧреЗ
рдкрд╛рда рд╕рдВрдкрд╛рджрдХ
рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛, рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ:
from Tkinter import * import tkFileDialog def Quit(ev): global root root.destroy() def LoadFile(ev): fn = tkFileDialog.Open(root, filetypes = [('*.txt files', '.txt')]).show() if fn == '': return textbox.delete('1.0', 'end') textbox.insert('1.0', open(fn, 'rt').read()) def SaveFile(ev): fn = tkFileDialog.SaveAs(root, filetypes = [('*.txt files', '.txt')]).show() if fn == '': return if not fn.endswith(".txt"): fn+=".txt" open(fn, 'wt').write(textbox.get('1.0', 'end')) root = Tk() panelFrame = Frame(root, height = 60, bg = 'gray') textFrame = Frame(root, height = 340, width = 600) panelFrame.pack(side = 'top', fill = 'x') textFrame.pack(side = 'bottom', fill = 'both', expand = 1) textbox = Text(textFrame, font='Arial 14', wrap='word') scrollbar = Scrollbar(textFrame) scrollbar['command'] = textbox.yview textbox['yscrollcommand'] = scrollbar.set textbox.pack(side = 'left', fill = 'both', expand = 1) scrollbar.pack(side = 'right', fill = 'y') loadBtn = Button(panelFrame, text = 'Load') saveBtn = Button(panelFrame, text = 'Save') quitBtn = Button(panelFrame, text = 'Quit') loadBtn.bind("<Button-1>", LoadFile) saveBtn.bind("<Button-1>", SaveFile) quitBtn.bind("<Button-1>", Quit) loadBtn.place(x = 10, y = 10, width = 40, height = 40) saveBtn.place(x = 60, y = 10, width = 40, height = 40) quitBtn.place(x = 110, y = 10, width = 40, height = 40) root.mainloop()
рдпрд╣рд╛рдВ рдХрдИ рдирдП рдмрд┐рдВрджреБ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдлрд╝рд╛рдЗрд▓ рдУрдкрди / рдХреНрд▓реЛрдЬ рдбрд╛рдпрд▓реЙрдЧ рдХреЗ рд▓рд┐рдП
tkFileDialog рдореЙрдбреНрдпреВрд▓ рдХреЛ
рд╣реБрдХ рдХрд┐рдпрд╛ ред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИ: рдЖрдкрдХреЛ
рдУрдкрди рдпрд╛
рд╕реЗрд╡реНрд╕ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ
рдлрд╝рд┐рд▓реНрдЯреЗрдкреНрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдирд╛, рдФрд░ рдЗрд╕рдХреЗ
рд╢реЛ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдХреЗрд╡рд▓ рд╕рдВрд╡рд╛рдж рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдпрд╛ рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдЧреАред
рджреВрд╕рд░реЗ, рд╣рдордиреЗ рджреЛ рдлреНрд░реЗрдо рдмрдирд╛рдПред
рдлреНрд░реЗрдо рдЕрдиреНрдп рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдПрдХ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдмрдЯрди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдПрдХ рдкрд╛рда рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдФрд░ рдПрдХ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ рдмрдЯрди рдкрд░ рдлрд┐рдЯ рди рд╣реЛ рдФрд░ рд╣рдореЗрд╢рд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рд╣реЛред
рддреАрд╕рд░рд╛,
рдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рдЬреЗрдЯ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рд╣рдордиреЗ рдЗрд╕реЗ рд░реИрдк = тАЛтАЛ'рд╡рд░реНрдб' рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЯреЗрдХреНрд╕реНрдЯ рд╢рдмреНрджреЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯреЗред рдкрд╛рда рдХреА рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ:
рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛, рд╣рдЯрд╛рдирд╛ ред рдЖрд░рдВрдн рдФрд░ рд╕рдорд╛рдкреНрддрд┐ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдВред рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ 'x.y' рдлреЙрд░реНрдо рдХреА рдПрдХ рд▓рд╛рдЗрди рд╣реИ, рдЬрд╣рд╛рдВ x рд▓рд╛рдЗрди рдореЗрдВ рд╡рд░реНрдг рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдФрд░ y рдПрдХ рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 1 рд╕реЗ рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ 0. рд╕реЗ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред рд╕реВрдЪрдХрд╛рдВрдХ '1.0' рдкрд╛рда рдХреЗ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдкрд╛рда рдХреЗ рдЕрдВрдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ 'рдЕрдВрдд' рд╣реИред рдЕрдиреБрдорддрд┐ рднреА '1.end' рдлреЙрд░реНрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╣реИред
рдЪреМрдерд╛, рд╣рдордиреЗ рдПрдХ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдмрдирд╛рдпрд╛ рд╣реИред рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рд╛рде, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рджреЛ рддрд░рд╣ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА:
scrollbar['command'] = textbox.yview textbox['yscrollcommand'] = scrollbar.set
рд╡рд╣ рд╕рдм рд╣реИред рдЯрд┐рдХреНрдЪрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рд╣рдордиреЗ рдЗрд╕рдХреА рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдмрд╛рдХреА рдЖрдЧреЗ рдХреЗ рд▓реЗрдЦреЛрдВ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
http://ru.wikiversity.orghttp://www.pythonware.com/