# Π‘Π½Π°ΡΠ°Π»Π° Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΡΡΡΡ ΠΊ Π»Π΅Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ
b[1, 1].pack(side=LEFT, fill=BOTH, expand=1)
b[1, 2].pack(side=LEFT, fill=BOTH, expand=1)
# ΠΡΠ΅ Π΄Π²Π΅ β ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ
b[1, 3].pack(side=BOTTOM, fill=Y)
b[1, 4].pack(side=BOTTOM, fill=BOTH)
# ΠΡΠΎΡΠ°Ρ ΡΠ°ΠΌΠΊΠ°:
# ΠΠ²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠ²Π΅ΡΡ Ρ
b[2, 1].grid(row=0, column=0, sticky=NW+SE)
b[2, 2].grid(row=0, column=1, sticky=NW+SE)
# ΠΈ ΠΎΠ΄Π½Π° Π½Π° Π΄Π²Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π² Π½ΠΈΠ·Ρ
b[2, 3].grid(row=1, column=0, columnspan=2, sticky=NW+SE)
# Π’ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΊΠ°:
# ΠΠ½ΠΎΠΏΠΊΠΈ Π²ΡΡΠΎΡΠΎΠΉ ΠΈ ΡΠΈΡΠΈΠ½ΠΎΠΉ Π² 40% ΡΠ°ΠΌΠΊΠΈ, ΡΠΊΠΎΡΡ Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ.
# ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΊΠΎΡΡ 1/10 ΠΎΡ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ ΡΠ°ΠΌΠΊΠΈ
b[3, 1].place(relx=0.1, rely=0.1, relwidth=0.4, relheight=0.4, anchor=NW)
# ΠΠ½ΠΎΠΏΠΊΠ° ΡΡΡΠΎΠ³ΠΎ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ. Π―ΠΊΠΎΡΡ Π² ΡΠ΅Π½ΡΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ
b[3, 2].place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=CENTER)
# Π―ΠΊΠΎΡΡ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΊΠΎΡΡ 9/10 ΠΎΡ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ ΡΠ°ΠΌΠΊΠΈ
b[3, 3].place(relx=0.9, rely=0.9, relwidth=0.4, relheight=0.4, anchor=CENTER)
tk.mainloop()
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ pack ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΊΡΠ°Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π΅ΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ². ΠΡΠΎΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ ΡΡ Π΅ΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ².
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ grid ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π² ΠΊΠ»Π΅ΡΠΊΠΈ ΡΠ΅ΡΠΊΠΈ (ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΠΏΠΎΡΠΎΠ± Π²Π΅ΡΡΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡ Π² HTML). ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π΄Π°ΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠ΅Π΅ΠΊ ΡΠ΅ΡΠΊΠΈ (row β ΡΡΡΠΎΠΊΠ°, column β ΡΡΠΎΠ»Π±Π΅Ρ), Π° ΡΠ°ΠΊΠΆΠ΅, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ΅Π΅ΠΊ (Π² ΡΡΡΠΎΠΊΠ°Ρ Π½ΠΈΠΆΠ΅ ΠΈΠ»ΠΈ Π² ΡΡΠΎΠ»Π±ΡΠ°Ρ ΠΏΡΠ°Π²Π΅Π΅) ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ (ΡΠ²ΠΎΠΉΡΡΠ²Π° rowspan ΠΈΠ»ΠΈ columnspan). ΠΡΠΎ ΡΠ°ΠΌΡΠΉ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈΠ· Π²ΡΠ΅Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ².
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ place ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ ΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ². Π Π°Π·ΠΌΠ΅ΡΡ ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π΄Π°Π½Ρ Π² Π΄ΠΎΠ»ΡΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°βΡ ΠΎΠ·ΡΠΈΠ½Π°.
ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ Π½Π°Π»ΠΎΠΆΠΈΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠ°ΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Tkinter
Π‘ΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Tkinter ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΡ, ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΎΡΠΌΡ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Canvas), Π½ΠΎ ΠΈ ΡΠ°ΡΡΡΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ ΠΈΠΊΠΎΠ½ΠΊΠΈ Ρ ΡΠ°ΡΡΡΠΎΠ²ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ Python Imaging Library, PIL):
import Tkinter, Image, ImageTk
FILENAME = "lena.jpg" # ΡΠ°ΠΉΠ» Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ
tk = Tkinter.Tk()
c = Tkinter.Canvas(tk, width=128, height=128)
src_img = Image.open(FILENAME)
img = ImageTk.PhotoImage(src_img)
c.create_image(0, 0, image=img, anchor="nw")
c.pack()
Tkinter.Label(tk, text=FILENAME).pack()
tk.mainloop()
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ:
ΠΠ΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π²ΠΈΠ΄ΠΆΠ΅ΡβΡΠΈΡΡΠ½ΠΎΠΊ (Canvas). Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Image ΠΈ ImageTk ΠΈΠ· PIL ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡβΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΡΠΈΡΡΠ½ΠΎΠΊ Tkinter. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ anchor Π·Π°Π΄Π°Π΅Ρ ΡΠ³ΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌ (0, 0) Π² ΡΠΈΡΡΠ½ΠΊΠ΅. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ ΡΠ΅Π²Π΅ΡΠΎβΠ·Π°ΠΏΠ°Π΄Π½ΡΠΉ ΡΠ³ΠΎΠ» (NW β NorthβWest). ΠΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ: n (ΡΠ΅Π²Π΅Ρ), w (Π·Π°ΠΏΠ°Π΄), s (ΡΠ³), e (Π²ΠΎΡΡΠΎΠΊ), ne, sw, se ΠΈ Ρ (ΡΠ΅Π½ΡΡ).
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ (ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎΠ±ΡΡΡΠ½ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²Π½ΡΡΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°βΡΠΈΡΡΠ½ΠΊΠ°):
from Tkinter import *
tk = Tk()
# Π ΠΈΡΡΠ½ΠΎΠΊ 300x300 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, ΡΠΎΠ½ β Π±Π΅Π»ΡΠΉ
c = Canvas(tk, width=300, height=300, bg="white")
c.create_arc((5, 5, 50, 50), style=PIESLICE) # Π‘Π΅ΠΊΡΠΎΡ ("ΠΊΡΡΠΎΠΊ ΠΏΠΈΡΠΎΠ³Π°")
c.create_arc((55, 5, 100, 50), style=ARC) # ΠΡΠ³Π°
c.create_arc((105, 5, 150, 50), style=CHORD, # Π‘Π΅Π³ΠΌΠ΅Π½Ρ
start=0, extent=150, fill="blue") # ΠΎΡ 0 Π΄ΠΎ 150 Π³ΡΠ°Π΄ΡΡΠΎΠ²
# ΠΠΎΠΌΠ°Π½Π°Ρ ΡΠΎ ΡΡΡΠ΅Π»ΠΊΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΠ΅
c.create_line([(5, 55), (55, 55), (30, 95)], arrow=LAST)
# ΠΡΠΈΠ²Π°Ρ (ΡΠ³Π»Π°ΠΆΠ΅Π½Π½Π°Ρ Π»ΠΎΠΌΠ°Π½Π°Ρ)
c.create_line([(105, 55), (155, 55), (130, 95)], smooth=1)
# ΠΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°
c.create_polygon([(205, 55), (255, 55), (230, 95)], fill="green")
# ΠΠ²Π°Π»
c.create_oval((5, 105, 50, 120), )
# ΠΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΅ΡΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅ΠΉ
c.create_rectangle((105, 105, 150, 130), fill="red",
outline="grey", width="5")
# Π’Π΅ΠΊΡΡ
c.create_text((5, 205), text=" Hello", anchor="nw")
# ΠΡΠ° ΡΠΎΡΠΊΠ° Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ³ΠΎΠ» ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ
c.create_oval((5, 205, 6, 206), outline="red")
# Π’Π΅ΠΊΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ
c.create_text((105, 205), text="Hello,\nmy friend!",
justify=LEFT, anchor="c")
c.create_oval((105, 205, 106, 206), outline="red")
# ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ
c.create_text((205, 205), text="Hello,\nmy friend!",
justify=CENTER, anchor="se")
c.create_oval((205, 205, 206, 206), outline="red")
c.pack()
tk.mainloop()
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΎΠΊΠ½ΠΎ:
Π‘Π»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ create_* ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ: ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π² Π΄ΡΡΠ³ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΠΏΠ΅ΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ, ΡΠ΄Π°Π»ΠΈΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈ Ρ.Π΄. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΡΡΠΆΠΎΠΊ, ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΡΠ²Π΅Ρ ΠΏΠΎ ΡΠ΅Π»ΡΠΊΡ ΠΌΡΡΠΈ:
from Tkinter import *
from random import choice
colors = "Red Orange Yellow Green LightBlue Blue Violet".split()
R = 10
tk = Tk()
c = Canvas(tk, bg="White", width="4i", height=300, relief=SUNKEN)
c.pack(expand=1, fill=BOTH)
def change_ball(event):
c.coords(CURRENT, (event.xβR, event.yβR, event.x+R, event.y+R))
c.itemconfigure(CURRENT, fill=choice(colors))
oval = c.create_oval((100βR, 100βR, 100+R, 100+R), fill="Black")
c.tag_bind(oval, "<1>", change_ball)
tk.mainloop()
ΠΠ΄Π΅ΡΡ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½ ΠΊΡΡΠΆΠΎΠΊ ΡΠ°Π΄ΠΈΡΡΠ° R, Ρ Π½ΠΈΠΌ ΡΠ²ΡΠ·Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ change_ball() ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡΡΠΈ. Π ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π°Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΊΡΡΠΆΠΊΠ° (Π΅Π³ΠΎ ΡΠ΅Π½ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΌΠ΅ΡΡΠ΅ ΡΠ΅Π»ΡΠΊΠ° ΠΌΡΡΠΈ) ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΡΠ²Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ itemconfigure(). Π’Π΅Π³ CURRENT Π² Tkinter ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΡΠ» ΡΠΎΠ±ΡΡΠΈΠ΅.
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Tkinter
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Tkinter. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½ ΡΠ°ΠΉΠ» Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π΅ ΠΌΠ΅Π½Ρ File Ρ ΠΏΡΠ½ΠΊΡΠ°ΠΌΠΈ Open ΠΈ Exit, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ Canvas, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈ Π±ΡΠ΄ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (ΠΎΠΏΡΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ PIL):
from Tkinter import *
import Image, ImageTk, tkFileDialog
global img, imgobj
def show():
global img, imgobj
# ΠΠ°ΠΏΡΠΎΡ Π½Π° ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°
filename = tkFileDialog.askopenfilename()
if filename != (): # ΠΡΠ»ΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π±ΡΠ»ΠΎ Π·Π°Π΄Π°Π½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ
# ΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π°
src_img = Image.open(filename)
img = ImageTk.PhotoImage(src_img)
# ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅
c.itemconfigure(imgobj, image=img, anchor="nw")
tk = Tk()
main_menu = Menu(tk) # ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΌΠ΅Π½Ρ
tk.config(menu=main_menu) # ΠΌΠ΅Π½Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊ ΠΎΠΊΠ½Ρ
file_menu = Menu(main_menu) # ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ
main_menu.add_cascade(label="File", menu=file_menu)
# ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ΅Π½Ρ File
file_menu.add_command(label="Open", command=show)
file_menu.add_separator() # ΡΠ΅ΡΡΠ° Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠ½ΠΊΡΠΎΠ² ΠΌΠ΅Π½Ρ
file_menu.add_command(label="Exit", command=tk.destroy)
c = Canvas(tk, width=300, height=300, bg="white")
# Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡβΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅
imgobj = c.create_image(0, 0)
c.pack()
tk.mainloop()
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΎΠΉ) Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π²Π΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΊΠ½Π° Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ°ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠΎΠ±ΡΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ. ΠΠ΅ΡΠ΅Π΄Π΅Π»Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½ΠΈΠΆΠ΅:
from Tkinter import *
import Image, ImageTk, tkFileDialog
class App(Tk):
def __init__(self):
Tk.__init__(self)
main_menu = Menu(self)
self.config(menu=main_menu)
file_menu = Menu(main_menu)
main_menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Open", command=self.show_img)
file_menu.add_separator()
file_menu.add_command(label="Exit", command=self.destroy)
self.c = Canvas(self, width=300, height=300, bg="white")
self.imgobj = self.c.create_image(0, 0)
self.c.pack()
def show_img(self):
filename = tkFileDialog.askopenfilename()
if filename != ():
src_img = Image.open(filename)
self.img = ImageTk.PhotoImage(src_img)
self.c.itemconfigure(self.imgobj, image=self.img, anchor="nw")