π Π‘Π°ΠΌΠΎΡΡΠΈΡΠ΅Π»Ρ ΠΏΠΎ Python Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ . Π§Π°ΡΡΡ 20: ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° Tkinter
Π Π°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°Ρ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°Ρ Tkinter, ΠΈΠ·ΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ GUI ΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ pack(), place() ΠΈ grid(). Π ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ β 10 ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ GUI Π΄Π»Ρ Python-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Python ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ GUI Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ:
- Tkinter
- wxPython
- PyQt
- PySide
- Kivy
- PyGTK
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ , Tkinter, Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΊΡ Python. ΠΠΈΠ΄ΠΆΠ΅ΡΡ Tkinter Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠ½ΠΎΠ³ΡΡΠΈΠ±Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠΈΠ»ΡΠ½ΠΎΡΡΡΡ β ΡΡΠΎ Π΅Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΠΌΠΈΠ½ΡΡ. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Ρ Tkinter Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ². ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°:
- ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ° Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
- ΠΠΌΠ΅Π΅Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
- ΠΠΎΠΌΠΈΠΌΠΎ Π±Π°Π·ΠΎΠ²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π° ΠΌΠΎΡΠ½ΡΡ
Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° β Text (ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ) ΠΈ Canvas (Β«Ρ
ΠΎΠ»ΡΡΒ», Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π»ΡΠ±ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ).
- ΠΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ttk, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π² ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π°Π±ΠΎΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² β Combobox, Notebook, Treeview, Progressbar, Scale ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΌ.
- ΠΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
β ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° Π½Π΅ΠΉ ΠΌΡ ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Tkinter
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Tkinter Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- ΠΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ
import tkinter
. - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
Tk
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. - (ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) ΠΠ°Π΄Π°ΠΉΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°
title()
ΠΎΠ±ΡΠ΅ΠΊΡΠ°Tk
. - (ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠ½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°
geometry()
ΠΎΠ±ΡΠ΅ΠΊΡΠ° Tk. ΠΠ΅ΡΠΎΠ΄geometry()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅"ΡΠΈΡΠΈΠ½Π°xΠ²ΡΡΠΎΡΠ°"
. - ΠΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄
mainloop()
ΠΎΠ±ΡΠ΅ΠΊΡΠ° Tk, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» GUI ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 250 Π½Π° 250 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Β«ΠΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β»:
import tkinter as tk # Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Tk root = tk.Tk() # ΠΠ°Π΄Π°ΠΉΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° root.title("ΠΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅") # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠ½Π° root.geometry("250x250") # ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» root.mainloop()
ΠΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Π² ΡΠ΅Π½ΡΡΠ΅ ΡΠΊΡΠ°Π½Π°
Π§ΡΠΎΠ±Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΠΎΠΊΠ½ΠΎ Tkinter ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅Π½ΡΡΠ΅ ΡΠΊΡΠ°Π½Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
- ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ winfo_screenwidth() ΠΈ winfo_screenheight() Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ ΡΠΊΡΠ°Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
- ΠΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄ geometry() ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ x ΠΈ y, ΡΠ°Π²Π½ΡΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ ΡΠΊΡΠ°Π½Π° Π·Π° ΠΌΠΈΠ½ΡΡΠΎΠΌ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
import tkinter as tk # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ root = tk.Tk() # ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ ΡΠΊΡΠ°Π½Π° screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() # ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ window_width = 500 window_height = 300 x = (screen_width // 2) - (window_width // 2) y = (screen_height // 2) - (window_height // 2) root.geometry(f"{window_width}x{window_height}+{x}+{y}") # ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ root.mainloop()
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠΊΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ ΡΠΎΡΠ½ΠΎ Π² ΡΠ΅Π½ΡΡΠ΅ ΡΠΊΡΠ°Π½Π°:
Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π² Tkinter
ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π² Tkinter Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π½Π° ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΎΠΊΠ½Π°: pack(), place() ΠΈ grid(). ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ, ΠΈ Π²ΡΠ±ΠΎΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
pack() β ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ. ΠΠ½ ΠΏΡΠΎΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΡΡΡΡΠΏΠΎΠ², ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ). ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ β Ρ ΠΏΠΎΠΌΠΎΡΡΡ pack() ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠΊΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ²: Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Ρ place().
import tkinter as tk root = tk.Tk() label1 = tk.Label(root, text="ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ pack()") label1.pack() button1 = tk.Button(root, text="ΠΠ°ΠΆΠΌΠΈ!") button1.pack() root.mainloop()
place() β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ ΡΠΎΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Π² ΠΎΠΊΠ½Π΅. ΠΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ β ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΡΡΡΠ΄Π½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
import tkinter as tk root = tk.Tk() label1 = tk.Label(root, text="ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ place()") label1.place(x=5, y=50) button1 = tk.Button(root, text="ΠΠ°ΠΆΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ") button1.place(x=50, y=100) root.mainloop()
grid() β ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π² ΡΠ΅ΡΠΊΡ ΠΈΠ· ΡΡΠ΄ΠΎΠ² ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ². Π‘Π°ΠΌΡΠΉ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ ΠΌΠΎΡΠ½ΡΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ². Π‘Π»ΠΎΠΆΠ½Π΅Π΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, ΡΠ΅ΠΌ pack(), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ².
import tkinter as tk root = tk.Tk() root.title("ΠΡΠΈΠΌΠ΅Ρ grid()") root.geometry("250x250") frame = tk.Frame(root) frame.pack(expand=True) label1 = tk.Label(frame, text="ΠΠΌΡ:") label1.grid(row=0, column=0) entry1 = tk.Entry(frame) entry1.grid(row=0, column=1) label2 = tk.Label(frame, text="Email:") label2.grid(row=1, column=0) entry2 = tk.Entry(frame) entry2.grid(row=1, column=1) button1 = tk.Button(frame, text="ΠΡΠΏΡΠ°Π²ΠΈΡΡ") button1.grid(row=2, column=1) root.update_idletasks() width = root.winfo_width() height = root.winfo_height() x = (root.winfo_screenwidth() // 2) - (width // 2) y = (root.winfo_screenheight() // 2) - (height // 2) root.geometry('{}x{}+{}+{}'.format(width, height, x, y)) root.mainloop()
Π ΡΠ΅Π»ΠΎΠΌ, pack() Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², place() β Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ , Π° grid() ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠΆΠ½Π° Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΡΡΡ, ΠΎΡΠΎΠ±ΠΎΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠ°ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ / ΡΡΠΎΠ»Π±ΡΠΎΠ².
Π‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ
Π§ΡΠΎΠ±Ρ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π½ΡΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ command() ΠΈ bind(), Π½ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌ Tkinter ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ.
ΠΠ΅ΡΠΎΠ΄ command() ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ:
import tkinter as tk root = tk.Tk() def say_hello(): print("ΠΡΠΈΠ²Π΅Ρ!") button1 = tk.Button(root, text="ΠΠΎΠ·Π΄ΠΎΡΠΎΠ²Π°ΠΉΡΡ", command=say_hello) button1.pack() root.mainloop()
ΠΠ΅ΡΠΎΠ΄ bind(), ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ command(), ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΡΡ: Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π»ΡΠ±ΡΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΌ Π² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅ β Ρ Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΡΡΠΈ, Π½Π°ΠΆΠ°ΡΠΈΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡΠΈ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠΊΠ½Π° ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅:
import tkinter as tk root = tk.Tk() def say_hello(event=None): print("ΠΡΠΈΠ²Π΅Ρ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° bind()") button1 = tk.Button(root, text="ΠΠ°ΠΆΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ") button1.bind("<Button-1>", say_hello) button1.pack() root.mainloop()
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
import tkinter as tk root = tk.Tk() button1 = tk.Button(root, text="ΠΠ°ΠΆΠΌΠΈ!", command=lambda: print("ΠΡΠΈΠ²Π΅Ρ ΠΎΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ!")) button1.pack() root.mainloop()
Π‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ:
import tkinter as tk from functools import partial root = tk.Tk() def say_hello(name): print(f"ΠΡΠΈΠ²Π΅Ρ, {name}!") button1 = tk.Button(root, text="ΠΠ°ΠΆΠΌΠΈ ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ", command=partial(say_hello, "ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ")) button1.pack() root.mainloop()
ΠΡΠ°ΠΊΡΠΈΠΊΠ°
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 1
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Tkinter ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΠΊΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Entry ΠΈ Button, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
import tkinter as tk root = tk.Tk() def button_click(): input_text = entry.get() print(f"ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ: {input_text}") entry = tk.Entry(root) button = tk.Button(root, text="ΠΡΠΏΡΠ°Π²ΠΈΡΡ", command=button_click) entry.pack() button.pack() root.mainloop()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 2
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Label ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
import tkinter as tk root = tk.Tk() label = tk.Label(root, text="ΠΠ·ΠΌΠ΅Π½ΠΈ ΡΡΠΎΡ ΡΠ΅ΠΊΡΡ") label.pack() def change_text(): label.config(text="ΠΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΠΊΡΡ") button = tk.Button(root, text="ΠΠ°ΠΆΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ!", command=change_text) button.pack() root.mainloop()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 3
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ Π² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅ Text ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°Ρ Label ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»ΠΎΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
import tkinter as tk import tkinter.ttk as ttk root = tk.Tk() root.geometry("250x150") root.title("ΠΠΎΠ΄ΡΡΠ΅Ρ ΡΠ»ΠΎΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²") def count_words_characters(): sentence = sentence_entry.get("1.0", "end-1c") words = len(sentence.split()) characters = len(sentence) words_label.config(text=f"ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»ΠΎΠ²: {words}") characters_label.config(text=f"ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: {characters}") sentence_entry = tk.Text(root, height=3, wrap="word") words_label = ttk.Label(root) characters_label = ttk.Label(root) count_button = ttk.Button(root, text="ΠΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ", command=count_words_characters) sentence_entry.pack() words_label.pack() characters_label.pack() count_button.pack() root.mainloop()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 4
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΠΎ ΡΠΊΠ°Π»Π΅ ΠΎΡ 0 Π΄ΠΎ 100. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ Scale (ttk ΠΌΠΎΠ΄ΡΠ»Ρ).
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
import tkinter as tk root = tk.Tk() label = tk.Label(root, text=f"ΠΠ°ΡΠ° ΠΎΡΠ΅Π½ΠΊΠ° ΠΎΡ 0 Π΄ΠΎ 100") label.pack() def update_label(value): label.config(text=f"ΠΠ°ΡΠ° ΠΎΡΠ΅Π½ΠΊΠ°: {value}") scale = tk.Scale(root, from_=0, to=100, orient="horizontal", command=update_label) scale.pack() root.mainloop()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 5
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° Progressbar ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ ttk. ΠΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π½ΡΠ»ΡΡΡΡΡ ΡΠΏΡΡΡΡ 5 ΡΠ΅ΠΊΡΠ½Π΄.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
import tkinter as tk from tkinter import ttk root = tk.Tk() progressbar = ttk.Progressbar(root, orient="horizontal", length=200, mode="determinate") progressbar.start() def stop_progressbar(): if root.winfo_exists() and progressbar.winfo_exists(): progressbar.stop() progressbar["value"] = 0 root.quit() root.destroy() if root.winfo_exists() and progressbar.winfo_exists(): root.after(5000, stop_progressbar) progressbar.pack() def exit_app(): stop_progressbar() root.protocol("WM_DELETE_WINDOW", exit_app) root.mainloop()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 6
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Tkinter ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΊΠ°Π·Π° ΡΡΡΠΊΡΠΎΠ². ΠΠ»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° ΡΡΡΠΊΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ Combobox ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ ttk.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
import tkinter as tk import tkinter.ttk as ttk root = tk.Tk() root.title("ΠΠ°ΠΊΠ°Π·") def select_item(): selected_item = combobox.get() selection_label.config(text=f"ΠΡΠ±ΡΠ°Π½ΠΎ: {selected_item}, 1 ΠΊΠ³") items = ["Π―Π±Π»ΠΎΠΊΠΈ", "ΠΠΏΠ΅Π»ΡΡΠΈΠ½Ρ", "ΠΠΈΠ½ΠΎΠ³ΡΠ°Π΄", "ΠΠ΅ΡΡΠΈΠΊΠΈ", "ΠΠ»ΡΠ±Π½ΠΈΠΊΠ°"] combobox = ttk.Combobox(root, values=items) selection_label = ttk.Label(root) select_button = ttk.Button(root, text="ΠΠ°ΠΊΠ°Π·Π°ΡΡ", command=select_item) combobox.pack() selection_label.pack() select_button.pack() root.mainloop()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 7
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ GUI ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ²Π΅Ρ ΠΈΠ· ΠΏΠ°Π»ΠΈΡΡΡ, ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π΅Π³ΠΎ HEX-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
import tkinter as tk import tkinter.colorchooser as cc root = tk.Tk() root.geometry("250x200") root.title("ΠΡΠ±ΠΎΡ ΡΠ²Π΅ΡΠ°") def choose_color(): color = cc.askcolor()[1] color_label.config(text=f"ΠΡ Π²ΡΠ±ΡΠ°Π»ΠΈ ΡΠ²Π΅Ρ {color}") second_label.config(bg=color) color_button = tk.Button(root, text="ΠΡΠ±ΡΠ°ΡΡ ΡΠ²Π΅Ρ", command=choose_color) color_label = tk.Label(root, text="ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ²Π΅Ρ") second_label = tk.Label(root, text="\t\t\t\n\t\t\t") color_button.pack(pady=10) color_label.pack() second_label.pack(pady=10) root.mainloop()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 8
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Spinbox Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» a ΠΈ b (0 <= a <= 100, 0 <= b <= 100), Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΡΠΌΠΌΡ Π²ΡΠ΅Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ a Π΄ΠΎ b Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
import tkinter as tk import tkinter.ttk as ttk class SumApp: def __init__(self, root): self.root = root root.geometry("250x200") self.root.title("Π‘ΡΠΌΠΌΠ° ΡΠΈΡΠ΅Π»") self.start_spinbox = ttk.Spinbox(root, from_=0, to=100, increment=1) self.end_spinbox = ttk.Spinbox(root, from_=0, to=100, increment=1) self.sum_label = tk.Label(root, text="") self.calc_button = tk.Button(root, text="ΠΡΡΠΈΡΠ»ΠΈΡΡ ΡΡΠΌΠΌΡ", command=self.calculate_sum) self.start_spinbox.pack(pady=10) self.end_spinbox.pack(pady=10) self.sum_label.pack(pady=10) self.calc_button.pack(pady=10) def calculate_sum(self): start = int(self.start_spinbox.get()) end = int(self.end_spinbox.get()) sum_ = sum(range(start, end+1)) self.sum_label.configure(text=f"Π‘ΡΠΌΠΌΠ° ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ {start} Π΄ΠΎ {end}: {sum_}") root = tk.Tk() app = SumApp(root) root.mainloop()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 9
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ GUI ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ-ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΠΈΠ»ΡΠΌΠΎΠ², ΠΊΠ½ΠΈΠ³ ΠΈ ΠΌΡΠ»ΡΡΡΠΈΠ»ΡΠΌΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Notebook ΠΈ Treeview Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΠ°Ρ . Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅Π΅ ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΈΠ·Π΄Π°Π½ΠΈΠΈ.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
import tkinter as tk from tkinter import ttk def retrieve_details(event): item = event.widget.focus() values = event.widget.item(item)['values'] details = f"ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠ·Π΄Π°Π½ΠΈΠΈ:\n\n" for i in range(len(values)): details += f"{event.widget['columns'][i].capitalize()}: {values[i]}\n" popup = tk.Toplevel(root) popup.title(event.widget.item(item)['text']) popup.geometry("250x150") popup_label = ttk.Label(popup, text=details) popup_label.pack(pady=10) close_button = ttk.Button(popup, text="ΠΠ°ΠΊΡΡΡΡ", command=popup.destroy) close_button.pack() root = tk.Tk() root.title("ΠΠ°ΡΠ°Π»ΠΎΠ³") root.geometry("600x300") notebook = ttk.Notebook(root) movies_tab = ttk.Frame(notebook) books_tab = ttk.Frame(notebook) animation_tab = ttk.Frame(notebook) notebook.add(movies_tab, text="Π€ΠΈΠ»ΡΠΌΡ") notebook.add(books_tab, text="ΠΠ½ΠΈΠ³ΠΈ") notebook.add(animation_tab, text="ΠΡΠ»ΡΡΡΠΈΠ»ΡΠΌΡ") movies_desc = ttk.Label(movies_tab, text="Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΈΠ»ΡΠΌΠΎΠ²") books_desc = ttk.Label(books_tab, text="Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠ½ΠΈΠ³") animation_desc = ttk.Label(animation_tab, text="Π‘ΠΏΠΈΡΠΎΠΊ ΠΌΡΠ»ΡΡΡΠΈΠ»ΡΠΌΠΎΠ²") movies_list = ttk.Treeview(movies_tab) books_list = ttk.Treeview(books_tab) animation_list = ttk.Treeview(animation_tab) movies_list['columns'] = ('ΠΠ°Π½Ρ', 'Π Π΅ΠΆΠΈΡΡΠ΅Ρ', 'ΠΠΎΠ΄') books_list['columns'] = ('ΠΠ²ΡΠΎΡ', 'ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ', 'ΠΠΎΠ΄') animation_list['columns'] = ('ΠΠ°Π½Ρ', 'Π‘ΡΡΠ΄ΠΈΡ', 'Π Π΅ΠΉΡΠΈΠ½Π³') for tree in [movies_list, books_list, animation_list]: for i, col in enumerate(tree['columns']): tree.column(col, width=100, anchor='center') tree.heading(col, text=col.capitalize()) tree.bind("<Double-1>", retrieve_details) movies_list.insert('', 'end', text='Π3Π³Π°Π½', values=('Π€Π°Π½ΡΠ°ΡΡΠΈΠΊΠ°', 'ΠΠΆΠ΅ΡΠ°ΡΠ΄ ΠΠΆΠΎΠ½ΡΡΠΎΡΠ½', '2022')) books_list.insert('', 'end', text='ΠΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠΊΠΈ', values=('ΠΠΆΠΎΠ½Π°ΡΠ°Π½ Π€ΡΠ°Π½Π·Π΅Π½', 'Corpus', '2022')) animation_list.insert('', 'end', text='ΠΠΈΠ½ΠΎΠΊΠΊΠΈΠΎ ΠΠΈΠ»ΡΠ΅ΡΠΌΠΎ ΠΠ΅Π»Ρ Π’ΠΎΡΠΎ', values=('ΡΡΠ½ΡΠ΅Π·ΠΈ', 'Disney+', '8.2')) movies_desc.pack() movies_list.pack() books_desc.pack() books_list.pack() animation_desc.pack() animation_list.pack() notebook.pack(fill='both', expand=True) root.mainloop()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 10
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ GUI ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ:
- ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅, Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ, Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΡΠΈΡΡΠΊΡ Π²Π²ΠΎΠ΄Π°.
ΠΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
import tkinter as tk from tkinter import ttk from math import sqrt class Calculator: def __init__(self, master): self.master = master self.master.title("ΠΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ") self.master.geometry("380x140") self.number_entry = ttk.Entry(self.master, width=20) self.number_entry.grid(row=0, column=0, columnspan=5, padx=5, pady=5) self.button_1 = ttk.Button(self.master, text="1", command=lambda: self.button_click(1)) self.button_2 = ttk.Button(self.master, text="2", command=lambda: self.button_click(2)) self.button_3 = ttk.Button(self.master, text="3", command=lambda: self.button_click(3)) self.button_4 = ttk.Button(self.master, text="4", command=lambda: self.button_click(4)) self.button_5 = ttk.Button(self.master, text="5", command=lambda: self.button_click(5)) self.button_6 = ttk.Button(self.master, text="6", command=lambda: self.button_click(6)) self.button_7 = ttk.Button(self.master, text="7", command=lambda: self.button_click(7)) self.button_8 = ttk.Button(self.master, text="8", command=lambda: self.button_click(8)) self.button_9 = ttk.Button(self.master, text="9", command=lambda: self.button_click(9)) self.button_0 = ttk.Button(self.master, text="0", command=lambda: self.button_click(0)) self.button_clear = ttk.Button(self.master, text="C", command=self.button_clear) self.button_add = ttk.Button(self.master, text="+", command=self.button_add) self.button_equal = ttk.Button(self.master, text="=", command=self.button_equal) self.button_subtract = ttk.Button(self.master, text="-", command=self.button_subtract) self.button_multiply = ttk.Button(self.master, text="*", command=self.button_multiply) self.button_divide = ttk.Button(self.master, text="/", command=self.button_divide) self.button_floor_div = ttk.Button(self.master, text="//", command=self.button_floor_div) self.button_modulus = ttk.Button(self.master, text="%", command=self.button_modulus) self.button_sqrt = ttk.Button(self.master, text="β", command=self.button_sqrt) self.button_neg = ttk.Button(self.master, text="+/-", command=self.button_neg) self.button_1.grid(row=1, column=0) self.button_2.grid(row=1, column=1) self.button_3.grid(row=1, column=2) self.button_add.grid(row=1, column=3) self.button_floor_div.grid(row=1, column=4) self.button_4.grid(row=2, column=0) self.button_5.grid(row=2, column=1) self.button_6.grid(row=2, column=2) self.button_subtract.grid(row=2, column=3) self.button_modulus.grid(row=2, column=4) self.button_7.grid(row=3, column=0) self.button_8.grid(row=3, column=1) self.button_9.grid(row=3, column=2) self.button_multiply.grid(row=3, column=3) self.button_sqrt.grid(row=3, column=4) self.button_clear.grid(row=4, column=0) self.button_0.grid(row=4, column=1) self.button_equal.grid(row=4, column=2) self.button_divide.grid(row=4, column=3) self.button_neg.grid(row=4, column=4) self.f_num = 0 self.math = "" def button_click(self, number): current = self.number_entry.get() self.number_entry.delete(0, tk.END) self.number_entry.insert(0, str(current) + str(number)) def button_clear(self): self.number_entry.delete(0, tk.END) def button_add(self): first_number = self.number_entry.get() self.math = "addition" self.f_num = int(first_number) self.number_entry.delete(0, tk.END) def button_equal(self): second_number = self.number_entry.get() self.number_entry.delete(0, tk.END) if self.math == "addition": self.number_entry.insert(0, self.f_num + int(second_number)) if self.math == "multiplication": self.number_entry.insert(0, self.f_num * int(second_number)) if self.math == "division": self.number_entry.insert(0, self.f_num / int(second_number)) if self.math == "floor_div": self.number_entry.insert(0, self.f_num // int(second_number)) if self.math == "modulus": self.number_entry.insert(0, self.f_num % int(second_number)) def button_subtract(self): first_number = self.number_entry.get() self.math = "subtraction" self.f_num = int(first_number) self.number_entry.delete(0, tk.END) def button_multiply(self): first_number = self.number_entry.get() self.math = "multiplication" self.f_num = int(first_number) self.number_entry.delete(0, tk.END) def button_divide(self): first_number = self.number_entry.get() self.math = "division" self.f_num = int(first_number) self.number_entry.delete(0, tk.END) def button_floor_div(self): first_number = self.number_entry.get() self.math = "floor_div" self.f_num = int(first_number) self.number_entry.delete(0, tk.END) def button_modulus(self): first_number = self.number_entry.get() self.math = "modulus" self.f_num = int(first_number) self.number_entry.delete(0, tk.END) def button_sqrt(self): number = float(self.number_entry.get()) result = sqrt(number) if result.is_integer(): self.number_entry.delete(0, tk.END) self.number_entry.insert(0, int(result)) else: self.number_entry.delete(0, tk.END) self.number_entry.insert(0, result) def button_neg(self): current = self.number_entry.get() if current.startswith("-"): current = current[1:] else: current = "-" + current self.number_entry.delete(0, tk.END) self.number_entry.insert(0, current) if __name__ == '__main__': root = tk.Tk() calc = Calculator(root) root.mainloop()
ΠΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡΠΎΠ³ΠΈ
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ GUI Π΄Π»Ρ Python-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Tkinter. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ Ρ Pygame.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡΠΈΡΠ΅Π»Ρ
- ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, ΡΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, ΠΎΠ½Π»Π°ΠΉΠ½ IDE
- ΠΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Python Ρ Π½ΡΠ»Ρ β ΠΊΠ½ΠΈΠ³ΠΈ, ΡΠ°ΠΉΡΡ, ΠΊΠ°Π½Π°Π»Ρ ΠΈ ΠΊΡΡΡΡ
- Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ : ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΠΌΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌΠΈ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°ΠΌΠΈ
- ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠΈΠΊΠ»Π° for
- Π£ΡΠ»ΠΎΠ²Π½ΡΠΉ ΡΠΈΠΊΠ» while
- Π€ΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
- ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
- Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
- Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ
- Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
- ΠΡΠ½ΠΎΠ²Ρ ΡΠΊΡΠ°ΠΏΠΈΠ½Π³Π° ΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π°
- ΠΡΠ½ΠΎΠ²Ρ ΠΠΠ: ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΡΠ½ΠΎΠ²Ρ ΠΠΠ: Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ
- ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° Tkinter
- ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ Π½Π° Pygame
- ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ SQLite
- ΠΡΠ½ΠΎΠ²Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Flask
- ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ NumPy
- ΠΡΠ½ΠΎΠ²Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ
Ρ Pandas