ΠΠ·ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π² ΡΠΈΠΊΠ» ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΠ²Π½ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ update_idletasks().
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΠΊΠ½ΠΎ Ρ Π΄Π²ΡΠΌΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ Π²Π½ΡΡΡΠΈ β ΠΏΠΎΠ»Π΅ΠΌ Π²Π²ΠΎΠ΄Π° ΠΈ Π½Π°Π΄ΠΏΠΈΡΡΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°Π΄ΠΏΠΈΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΏΠΎΠ»Π΅ΠΌ Π²Π²ΠΎΠ΄Π°. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ², ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
from Tkinter import *
tk = Tk()
tv = StringVar()
Label(tk,
textvariable=tv,
relief="groove",
borderwidth=3,
font=("Courier", 20, "bold"),
justify=LEFT,
width=50,
padx=10,
pady=20,
takefocus=False,
).pack()
Entry(tk,
textvariable=tv,
takefocus=True,
).pack()
tv.set("123")
tk.mainloop()
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ:
ΠΠΈΠ΄ΠΆΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΡΡΡΡ ΠΏΡΡΠΌΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π½Π΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ Π²Π½ΡΡΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°βΠΎΠΊΠ½Π°. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° textvariable (ΡΠ΅ΠΊΡΡΠΎΠ²Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ), relief (ΡΠ΅Π»ΡΠ΅Ρ), borderwidth (ΡΠΈΡΠΈΠ½Π° Π³ΡΠ°Π½ΠΈΡΡ), justify (Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅), width (ΡΠΈΡΠΈΠ½Π°, Π² Π·Π½Π°ΠΊΠΎΠΌΠ΅ΡΡΠ°Ρ ), padx ΠΈ pady (ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠ° Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ ΠΈ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°), takefocus (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ½ΡΡΡ ΡΠΎΠΊΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ Tab), font (ΡΡΠΈΡΡ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΅Π³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ). ΠΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΈΠΏΠΈΡΠ½Ρ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², Ρ ΠΎΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Canvas ΡΠΈΡΠΈΠ½Π° Π·Π°Π΄Π°Π΅ΡΡΡ Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ , Π° Π½Π΅ Π² Π·Π½Π°ΠΊΠΎΠΌΠ΅ΡΡΠ°Ρ .
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ² ΡΠΎΠ½Ρ, ΠΏΠ΅ΡΠ΅Π΄Π½Π΅ΠΌΡ ΠΏΠ»Π°Π½Ρ (ΡΠ΅ΠΊΡΡΡ), Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° (ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° Π³ΡΠ°Π½ΠΈΡΡ) Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΈ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΠΎΠΊΡΡΠ°:
from Tkinter import *
tk = Tk()
tv = StringVar()
Entry(tk,
textvariable=tv,
takefocus=True,
borderwidth=10,
).pack()
mycolor1 = "#%02X%02X%02X" % (200, 200, 20)
Entry(tk,
textvariable=tv,
takefocus=True,
borderwidth=10,
foreground=mycolor1, # fg, ΡΠ΅ΠΊΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°
background="#0000FF", # bg, ΡΠΎΠ½ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°
highlightcolor='green', # ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΠΏΡΠΈ ΡΠΎΠΊΡΡΠ΅
highlightbackground='red', # ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° Π±Π΅Π· ΡΠΎΠΊΡΡΠ°
).pack()
tv.set("123")
tk.mainloop()
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΡΠΈΠ»Π΅Π²ΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΡΡΠ°Π·Ρ: Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° tk_setPalette(). ΠΠΎΠΌΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ selectForeground ΠΈ selectBackground (ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ ΠΈ ΡΠΎΠ½ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ), selectColor (ΡΠ²Π΅Ρ Π² Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Checkbutton), insertBackground (ΡΠ²Π΅Ρ ΡΠΎΡΠΊΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ) ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:ΠΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° get(). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π½Π°Π·Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Entry ΠΈΠΌΠ΅Π½Π΅ΠΌ e, ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ: e.get(). ΠΡΠ°Π²Π΄Π°, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠΎΠΉ ΠΆΠ΅ Π³ΠΈΠ±ΠΊΠΎΡΡΡΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ get() ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Text: ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
ΠΠΈΠ΄ΠΆΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ ScrolledText ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Python. ΠΡΠΎΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΠ°ΠΌΠΊΠ΅ Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ»ΠΎΡΠΎΠΉ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ:
from Tkinter import *
from ScrolledText import ScrolledText
tk = Tk() # ΠΎΠΊΠ½ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ
txt = ScrolledText(tk) # Π²ΠΈΠ΄ΠΆΠ΅Ρ ΡΠ΅ΠΊΡΡΠ° Ρ ΠΏΡΠΎΠΊΡΡΡΠΊΠΎΠΉ
txt.pack() # Π²ΠΈΠ΄ΠΆΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ
for x in range(1, 1024): # Π²ΠΈΠ΄ΠΆΠ΅Ρ Π½Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ
txt.insert(END, str(2L**x)+"\n")
tk.mainloop()
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ.
ΠΠ»Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ Π² Tk ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΠ½Π΄Π΅ΠΊΡΡ Π²ΡΠΎΠ΄Π΅ 1.0 ΠΈ END ΡΠΆΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΠΈΡΡ β ΡΡΠΎ Π½Π°ΡΠ°Π»ΠΎ ΡΠ΅ΠΊΡΡΠ° (ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ°, Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ») ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ. (Π Tk ΡΡΡΠΎΠΊΠΈ Π½ΡΠΌΠ΅ΡΡΡΡΡΡ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π° ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΡΠΎΠΊΠΈ β Ρ Π½ΡΠ»Ρ). ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²:
β’ L.C ΠΠ΄Π΅ΡΡ L β Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ, Π° C β Π½ΠΎΠΌΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΡΡΡΠΎΠΊΠ΅.
β’ INSERT Π’ΠΎΡΠΊΠ° Π²ΡΡΠ°Π²ΠΊΠΈ.
β’ CURRENT Π‘ΠΈΠΌΠ²ΠΎΠ», Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊ ΠΊΡΡΡΠΎΡΡ ΠΌΡΡΠΈ.
β’ END ΠΠΎΠ·ΠΈΡΠΈΡ ΡΡΠ°Π·Ρ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π² ΡΠ΅ΠΊΡΡΠ΅
β’ M.first, M.last ΠΠ½Π΄Π΅ΠΊΡΡ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΊΠΎΠ½ΡΠ° ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎΠΌ M ΡΡΠ°ΡΡΠΊΠ° ΡΠ΅ΠΊΡΡΠ°.
β’ SEL_FIRST, SEL_LAST ΠΠ½Π΄Π΅ΠΊΡΡ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΊΠΎΠ½ΡΠ° Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°.
β’ M ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ END, INSERT ΠΈΠ»ΠΈ CURRENT). ΠΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° ΠΌΠ°ΡΠΊΠ΅ΡΡ Π±ΡΠ΄ΡΡ ΡΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ.
β’ @x,y Π‘ΠΈΠΌΠ²ΠΎΠ» ΡΠ΅ΠΊΡΡΠ°, Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΊ ΡΠΎΡΠΊΠ΅ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ x, y.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠ½Π°Π±Π΄ΠΈΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ Π³ΠΈΠΏΠ΅ΡΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ:
from Tkinter import *
import urllib
tk = Tk()
txt = Text(tk, width=64) # ΠΏΠΎΠ»Π΅ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ
txt.grid(row=0, column=0, rowspan=2)
addr=Text(tk, background="White", width=64, height=1) # ΠΏΠΎΠ»Π΅ Π°Π΄ΡΠ΅ΡΠ°
addr.grid(row=0, column=1)
page=Text(tk, background="White", width=64) # ΠΏΠΎΠ»Π΅ Ρ htmlβΠΊΠΎΠ΄ΠΎΠΌ
page.grid(row=1, column=1)
def fetch_url(event):
click_point = "@%s,%s" % (event.x, event.y)
trs = txt.tag_ranges("href") # ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠ°, ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΡΡ ΠΊΠ°ΠΊ href
url = ""
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΏΡΠΈΡΠ΅Π»ΡΡ ΡΠ΅Π»ΡΠΎΠΊ ΠΌΡΡΠΈ, ΠΈ Π±Π΅ΡΠ΅ΡΡΡ
# ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ URL
for i in range(0, len(trs), 2):
if txt.compare(trs[i], "<=", click_point) and \
txt.compare(click_point, "<=", trs[i+1]):
url = txt.get(trs[i], trs[i+1])
html_doc = urllib.urlopen(url).read()
addr.delete("1.0", END)
addr.insert("1.0", url) # URL ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠ»Π΅ Π°Π΄ΡΠ΅ΡΠ°
page.delete("1.0", END)
page.insert("1.0", html_doc) # ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ HTMLβΠ΄ΠΎΠΊΡΠΌΠ΅Π½Ρ
textfrags = ["Python main site: ", "http://www.python.org",
"\nJython site: ", "http://www.jython.org",
"\nThat is all!"]
for frag in textfrags:
if frag.startswith("http:"):
txt.insert(END, frag, "href") # URL ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΡΡ Ρ ΠΌΠ΅ΡΠΊΠΎΠΉ href
else:
txt.insert(END, frag) # ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΡΡ
# ΡΡΡΠ»ΠΊΠΈ ΠΎΡΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠΈΠ½ΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ
txt.tag_config("href", foreground="Blue", underline=1)
# ΠΏΡΠΈ ΡΠ΅Π»ΡΠΊΠ΅ ΠΌΡΡΠΈ Π½Π° ΡΠ΅ΠΊΡΡΠ΅, ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΌ ΠΊΠ°ΠΊ "href",
# ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ fetch_url()
txt.tag_bind("href", "<1>", fetch_url)
tk.mainloop() # Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ (ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΡ) ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ»Ρ ΠΏΡΠΈΠ΄Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΠ°ΡΡΠΊΠ°ΠΌ ΡΠ΅ΠΊΡΡΠ° ΠΎΡΠΎΠ±ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ΅Π³ΠΎΠΌ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ URL ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅Π³ΠΎΠΌ href. ΠΠΎΠ·Π΄Π½Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° tag_config() Π·Π°Π΄Π°ΡΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ°, ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠ΅Π³ΠΎΠΌ. ΠΠ΅ΡΠΎΠ΄ΠΎΠΌ tag_bind() ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ (ΡΠ΅Π»ΡΠΎΠΊ ΠΌΡΡΠΈ) Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (fetch_url()).
Π ΡΠ°ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ fetch_url() Π½ΡΠΆΠ½ΠΎ Π² Π½Π°ΡΠ°Π»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠ°ΡΡΠΎΠΊ ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΈΡΠ΅Π»ΡΡ ΡΠ΅Π»ΡΠΎΠΊ ΠΌΡΡΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° tag_ranges() ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ Π²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΌΠ΅ΡΠ΅Π½Ρ ΠΊΠ°ΠΊ href. ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ URL ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ (ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ compare()) ΡΠΎΡΠΊΠΈ ΡΠ΅Π»ΡΠΊΠ° ΠΌΡΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠ². Π’Π°ΠΊ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π», Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΏΠ°Π» ΡΠ΅Π»ΡΠΎΠΊ, ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° get() ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°. ΠΠ°ΠΉΠ΄Ρ URL, Π΅Π³ΠΎ Π² ΠΏΠΎΠ»Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π°Π΄ΡΠ΅ΡΠ°, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ HTMLβΠΊΠΎΠ΄, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ URL.
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Π°ΡΡΠ΅Π½Π°Π» Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Π½Π΅ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°Π΅ΡΡΡ. Π Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°Π³Π»ΡΠ΄Π΅Π½, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Π² Tk. Π ΡΡΠ΅Ρ ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ: pack, grid ΠΈ place:
from Tkinter import *
tk = Tk()
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠΈ ΡΠ°ΠΌΠΊΠΈ
frames = {}
b = {}
for fn in 1, 2, 3:
f = Frame(tk, width=100, height=200, bg="White")
f.pack(side=LEFT, fill=BOTH)
frames[fn] = f
for bn in 1, 2, 3, 4: # Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΠΎΠΊ
b[fn, bn] = Button(frames[fn], text="%s.%s" % (fn, bn))
# ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΠΌΠΊΠ°:
# Π‘Π½Π°ΡΠ°Π»Π° Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΡΡΡΡ ΠΊ Π»Π΅Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ
b[1, 1].pack(side=LEFT, fill=BOTH, expand=1)
b[1, 2].pack(side=LEFT, fill=BOTH, expand=1)
# ΠΡΠ΅ Π΄Π²Π΅ β ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ