Печать
Просмотров: 1165

Полезный материал:

  1. Руководство по Tkinter.
  2. Python --- (11) Компонент окна Tkinter: Canvas. (подробно)
  3. Tkinter. Программирование GUI на Python. Курс.
  4. Tkinter - создание графического интерфейса в Python.
  5. Tkinter. Рисуем линии, прямоугольники, круг и текст в Tkinter [Урок №6].
  6. Tkinter. Пишем игру змейка на Tkinter [Урок №7].
  7. Tkinter. Обучение Python GUI (уроки по Tkinter).
  8. TKinter - GUI приложение на Python (+игра "Сапёр") [egoroff_channel] (28 видео, YouTube)
  9. Игра "Сапер" на Python:TKinter [egoroff_channel] (16 видео, YouTube)

Самая простая программа на TKinter, которая запускает окно:

import tkinter

master = tkinter.Tk()
master.mainloop()


Зададим размеры и положение окну TKinter:

from tkinter import *

master = Tk()
master.title('Окно')
master.geometry('800x600+200+50')
master.geometry('-0-0')
master.resizable(height=False, width=False)
master.mainloop()


Зададим размеры и расположим окно TKinter по центру экрана:

from tkinter import *

master = Tk()
scr_w = master.winfo_screenwidth()
scr_h = master.winfo_screenheight()
width, height = 800, 600
x = scr_w // 2 - width // 2
y = scr_h // 2 - height // 2
master.title('Окно')
master.geometry(f'{width}x{height}')
master.geometry(f'-{x}-{y}')
master.resizable(height=False, width=False)
master.mainloop()


Распахнуть окно TKinter на весь экран:

master.attributes('-fullscreen', True)


Шаблон окна TKinter с холстом внутри окна:

from tkinter import *

master = Tk()
master.title('Окно')
canvas = Canvas(master, width=800, height=600, background='WHITE')
canvas.pack(expand=True, fill=BOTH)
master.mainloop()


Названия цветов:

azure, blue, coral, cyan, gold, gray, green, lavender, light gray, magenta, navy, orange, pink, purple, red, sky blue, snow, tomato, white, yellow, alice blue, dark orange, lemon chiffon, mint cream, misty rose

Названия цветов в цветовой таблице.

Шаблон окна TKinter с холстом внутри окна:

from tkinter import *

master = Tk()
master.title('Окно')
canvas = Canvas(master, width=800, height=600, background='WHITE')
canvas.pack(expand=True, fill=BOTH)
master.mainloop()



Простая программа на TKinter с определёнными размерами окна:

import tkinter

master = tkinter.Tk()
canvas = tkinter.Canvas(master, height=800, width=600)
canvas.pack()
master.mainloop()


В окне TKinter подкрасим фон:

import tkinter

master = tkinter.Tk()
canvas = tkinter.Canvas(master, bg='blue', height=600, width=600)
canvas.pack()
master.mainloop()


Синяя пунктирная (dash) линия:

canvas.create_line(200, 50, 500, 50, dash=(10, 6), fill='blue')


В окне TKinter нарисуем зелёный круг:

import tkinter

master = tkinter.Tk()
canvas = tkinter.Canvas(master, bg='blue', height=600, width=600)
oval = canvas.create_oval((100, 100), (210, 210), fill='green')
canvas.pack()
master.mainloop()


В окне TKinter нарисуем белую линию (границу):

import tkinter

master = tkinter.Tk()
canvas = tkinter.Canvas(master, bg='blue', height=600, width=600)
oval = canvas.create_oval((100, 100), (210, 210), fill='green')
fringe = canvas.create_line((50, 20), (50, 580), fill='white', width=3)
canvas.pack()
master.mainloop()


В окне TKinter нарисуем белую линию (границу):

import tkinter

def key_pressed(event):
    if event.keysym == 'Up':
        canvas.move(oval, 0, -10)
    elif event.keysym == 'Left':
        canvas.move(oval, -10, 0)

master = tkinter.Tk()
canvas = tkinter.Canvas(master, bg='blue', height=600, width=600)
oval = canvas.create_oval((100, 100), (210, 210), fill='green')
fringe = canvas.create_line((50, 20), (50, 580), fill='white', width=3)
canvas.pack()
master.bind("", key_pressed)
master.mainloop()


Команда рисования квадрата:

kvadr = canvas.create_rectangle((400, 200), (300, 300), fill='lightblue')


Команда вывода текста на канве:

lab = canvas.create_text(100, 80,
                         fill="white", font="Times 20 italic bold",
                         text="Hello World!")


Label - команда вывода надписи - метки (смотреть вверху окна):

label = tkinter.Label(master, text="Hello world!", font=('', 30))
label.config(text='Меняю текст и фон', background="lightgrey")
label.pack()



Управляем окружностью с клавиатуры:

import tkinter


def key_pressed(event):
    if event.keysym == 'space':
        canvas.coords(oval, (300, 300, 310, 310))
    if event.keysym == 'Up':
        canvas.move(oval, 0, -10)
    elif event.keysym == 'Down':
        canvas.move(oval, 0, 10)
    elif event.keysym == 'Left':
        canvas.move(oval, -10, 0)
    elif event.keysym == 'Right':
        canvas.move(oval, 10, 0)
    if canvas.coords(oval)[1] < 50: # координата y1
        canvas.itemconfig(oval, fill='red')
    if canvas.coords(oval)[0] < 50: # координата x1
        canvas.move(oval, 400, 0)


master = tkinter.Tk()
canvas = tkinter.Canvas(master, bg='blue', height=600, width=600)
oval = canvas.create_oval((100, 100), (210, 210), fill='green')
fringe = canvas.create_line((50, 0), (50, 600), fill='white', width=3)
canvas.pack()
master.bind("<KeyPress>", key_pressed)
master.mainloop()

Рисуем окружности и управляем одной из них (анализируем столкновение):

import tkinter


def show_key(event):
    label.config(text=event.keysym)
    if event.keysym == 'Up':
        label.config(fg="red")
        canvas.move(oval1, 0, -10)
    elif event.keysym == 'Down':
        label.config(fg="green")
        canvas.move(oval1, 0, 10)
    elif event.keysym == 'Left':
        canvas.move(oval1, -10, 0)
    elif event.keysym == 'Right':
        canvas.move(oval1, 10, 0)
    else:
        label.config(fg="blue")
    pos = canvas.coords(oval1)
    ox1, oy1, ox2, oy2 = pos
    sx1, sy1, sx2, sy2 = canvas.coords(oval2)
    if (ox2 >= sx1) and (ox1 <= sx2) and \
       (oy2 >= sy1) and (oy1 <= sy2):
        label_ava.config(text='АВАРИЯ')
    else:
        label_ava.config(text='Хорошо!')

    # (x2 > 200)   # 200, 200 | 500, 500
    label_oval.config(text=str(pos))


master = tkinter.Tk()
label = tkinter.Label(master, text="Hello world!")
label.pack()

label_oval = tkinter.Label(master, text="Coordinates will be here!")
label_oval.pack()
label_ava = tkinter.Label(master, text="Good!")
label_ava.pack()


canvas = tkinter.Canvas(master, bg='white', height=600, width=600)
oval1 = canvas.create_oval((0, 0), (100, 100), fill='red')
oval2 = canvas.create_oval((200, 200), (300, 300), fill='green')
canvas.pack()

master.bind("", show_key)
master.mainloop()


Рисуем квадраты и двигаем их (управляемый квадрат двигает другие квадраты):

import tkinter


def show_key(event):
    label.config(text=event.keysym)
    lg1, vg1, ng1, pg1 = canvas.coords(oval1)
    lg2, vg2, ng2, pg2 = canvas.coords(oval2)
    lg3, vg3, ng3, pg3 = canvas.coords(oval3)
    if lg1 < 0 or lg2 < 0 or lg3 < 0:
        return
    if event.keysym == 'Up':
        label.config(fg="red")
        canvas.move(oval1, 0, -10)
    elif event.keysym == 'Down':
        label.config(fg="green")
        canvas.move(oval1, 0, 10)
    elif event.keysym == 'Left':
        canvas.move(oval1, -10, 0)
    elif event.keysym == 'Right':
        canvas.move(oval1, 10, 0)
    else:
        label.config(fg="blue")
    pos = canvas.coords(oval1)
    ox1, oy1, ox2, oy2 = pos
    sx1, sy1, sx2, sy2 = canvas.coords(oval2)
    if (ox2 >= sx1) and (ox1 <= sx2) and \
       (oy2 >= sy1) and (oy1 <= sy2):
        if event.keysym == 'Up':
            canvas.move(oval2, 0, -abs(oy1 - sy2))
        elif event.keysym == 'Down':
            canvas.move(oval2, 0, 10)
        elif event.keysym == 'Left':
            canvas.move(oval2, -10, 0)
        elif event.keysym == 'Right':
            canvas.move(oval2, 10, 0)
        label_ava.config(text='АВАРИЯ')
    else:
        label_ava.config(text='Хорошо!')

    sx1, sy1, sx2, sy2 = canvas.coords(oval3)
    if (ox2 >= sx1) and (ox1 <= sx2) and \
       (oy2 >= sy1) and (oy1 <= sy2):
        if event.keysym == 'Up':
            canvas.move(oval3, 0, -abs(oy1 - sy2))
        elif event.keysym == 'Down':
            canvas.move(oval3, 0, 10)
        elif event.keysym == 'Left':
            canvas.move(oval3, -10, 0)
        elif event.keysym == 'Right':
            canvas.move(oval3, 10, 0)
        label_ava.config(text='АВАРИЯ')
    else:
        label_ava.config(text='Хорошо!')


    # (x2 > 200)   # 200, 200 | 500, 500
    label_oval.config(text=str(pos))


master = tkinter.Tk()
label = tkinter.Label(master, text="Hello world!")
label.pack()

label_oval = tkinter.Label(master, text="Coordinates will be here!")
label_oval.pack()
label_ava = tkinter.Label(master, text="Good!")
label_ava.pack()


canvas = tkinter.Canvas(master, bg='white', height=600, width=600)
oval1 = canvas.create_rectangle((0, 0), (100, 100), fill='red')
oval2 = canvas.create_rectangle((100, 200), (200, 300), fill='green')
oval3 = canvas.create_rectangle((400, 200), (300, 300), fill='lightblue')
canvas.pack()

master.bind("", show_key)
master.mainloop()