Вход/Регистрация
Язык программирования 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
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: