Язык программирования Python
вернуться

Сузи Роман Арвиевич

Шрифт:

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 *

  • Читать дальше
  • 1
  • ...
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Моя полка

  • Моя полка

Связаться

  • help@private-bookers.win