My-library.info
Все категории

Роман Сузи - Язык программирования Python

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Роман Сузи - Язык программирования Python. Жанр: Программирование издательство неизвестно, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Язык программирования Python
Автор
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
17 сентябрь 2019
Количество просмотров:
353
Текст:
Ознакомительная версия
Читать онлайн
Роман Сузи - Язык программирования Python

Роман Сузи - Язык программирования Python краткое содержание

Роман Сузи - Язык программирования Python - описание и краткое содержание, автор Роман Сузи, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
Курс посвящен одному из бурно развивающихся и популярных в настоящее время сценарных языков программирования — Python. Язык Python позволяет быстро создавать как прототипы программных систем, так и сами программные системы, помогает в интеграции программного обеспечения для решения производственных задач. Python имеет богатую стандартную библиотеку и большое количество модулей расширения практически для всех нужд отрасли информационных технологий. Благодаря ясному синтаксису изучение языка не составляет большой проблемы. Написанные на нем программы получаются структурированными по форме, и в них легко проследить логику работы. На примере языка Python рассматриваются такие важные понятия как: объектно–ориентированное программирование, функциональное программирование, событийно–управляемые программы (GUI–приложения), форматы представления данных (Unicode, XML и т.п.). Возможность диалогового режима работы интерпретатора Python позволяет существенно сократить время изучения самого языка и перейти к решению задач в соответствующих предметных областях. Python свободно доступен для многих платформ, а написанные на нем программы обычно переносимы между платформами без изменений. Это обстоятельство позволяет применять для изучения языка любую имеющуюся аппаратную платформу.

Язык программирования Python читать онлайн бесплатно

Язык программирования Python - читать книгу онлайн бесплатно, автор Роман Сузи
Конец ознакомительного отрывкаКупить книгу

Ознакомительная версия.

# Сначала две кнопки прикрепляются к левому краю

b[1, 1].pack(side=LEFT, fill=BOTH, expand=1)

b[1, 2].pack(side=LEFT, fill=BOTH, expand=1)

# Еще две — к нижнему

b[1, 3].pack(side=BOTTOM, fill=Y)

b[1, 4].pack(side=BOTTOM, fill=BOTH)


# Вторая рамка:

# Две кнопки сверху

b[2, 1].grid(row=0, column=0, sticky=NW+SE)

b[2, 2].grid(row=0, column=1, sticky=NW+SE)

# и одна на две колонки в низу

b[2, 3].grid(row=1, column=0, columnspan=2, sticky=NW+SE)


# Третья рамка:

# Кнопки высотой и шириной в 40% рамки, якорь в левом верхнем углу.

# Координаты якоря 1/10 от ширины и высоты рамки

b[3, 1].place(relx=0.1, rely=0.1, relwidth=0.4, relheight=0.4, anchor=NW)

# Кнопка строго по центру. Якорь в центре кнопки

b[3, 2].place(relx=0.5, rely=0.5, relwidth=0.4, relheight=0.4, anchor=CENTER)

# Якорь по центру кнопки. Координаты якоря 9/10 от ширины и высоты рамки

b[3, 3].place(relx=0.9, rely=0.9, relwidth=0.4, relheight=0.4, anchor=CENTER)


tk.mainloop()

Результат следующий:

Менеджер pack просто заполняет внутреннее пространство на основании предпочтения того или иного края, необходимости заполнить все измерение. В некоторых случаях ему приходится менять размеры подчиненных виджетов. Этот менеджер стоит использовать только для достаточно простых схем расположения виджетов.

Менеджер grid помещает виджеты в клетки сетки (это очень похоже на способ верстки таблиц в HTML). Каждому располагаемому виджету даются координаты в одной из ячеек сетки (row — строка, column — столбец), а также, если нужно, столько последующих ячеек (в строках ниже или в столбцах правее) сколько он может занять (свойства rowspan или columnspan). Это самый гибкий из всех менеджеров.

Менеджер place позволяет располагать виджеты по произвольным координатам и с произвольными размерами подчиненных виджетов. Размеры и координаты могут быть заданы в долях от размера виджета–хозяина.

Непосредственно внутри одного виджета нельзя использовать более одного менеджера расположения: менеджеры могут наложить противоречащие ограничения на вложенные виджеты и внутренние виджеты просто не смогут быть расположены.

Изображения в Tkinter

Средствами Tkinter можно выводить не только текст, примитивные формы (с помощью виджета Canvas), но и растровые изображения. Следующий пример демонстрирует вывод иконки с растровым изображением (для этого примера нужно предварительно установить пакет Python Imaging Library, PIL):

import Tkinter, Image, ImageTk


FILENAME = "lena.jpg" # файл с графическим изображением


tk = Tkinter.Tk()

c = Tkinter.Canvas(tk, width=128, height=128)

src_img = Image.open(FILENAME)


img = ImageTk.PhotoImage(src_img)

c.create_image(0, 0, image=img, anchor="nw")

c.pack()

Tkinter.Label(tk, text=FILENAME).pack()


tk.mainloop()

В результате получается:

Здесь использован виджет–рисунок (Canvas). С помощью функций из пакетов Image и ImageTk из PIL получается объект–изображение, подходящее для включения в рисунок Tkinter. Свойство anchor задает угол, который привязывается к координатам (0, 0) в рисунке. В данном примере это северо–западный угол (NW — North–West). Другие возможности: n (север), w (запад), s (юг), e (восток), ne, sw, se и с (центр).

В следующем примере показаны графические примитивы, которые можно использовать на рисунке (приведенные комментарии объясняют свойства графических объектов внутри виджета–рисунка):

from Tkinter import *


tk = Tk()

# Рисунок 300x300 пикселей, фон — белый

c = Canvas(tk, width=300, height=300, bg="white")


c.create_arc((5, 5, 50, 50), style=PIESLICE) # Сектор ("кусок пирога")

c.create_arc((55, 5, 100, 50), style=ARC)    # Дуга

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 *

import Image, ImageTk, tkFileDialog


class App(Tk):

 def __init__(self):

  Tk.__init__(self)

  main_menu = Menu(self)

  self.config(menu=main_menu)

  file_menu = Menu(main_menu)

  main_menu.add_cascade(label="File", menu=file_menu)

  file_menu.add_command(label="Open", command=self.show_img)

  file_menu.add_separator()

  file_menu.add_command(label="Exit", command=self.destroy)


  self.c = Canvas(self, width=300, height=300, bg="white")

  self.imgobj = self.c.create_image(0, 0)

  self.c.pack()


 def show_img(self):

  filename = tkFileDialog.askopenfilename()

  if filename != ():

   src_img = Image.open(filename)

   self.img = ImageTk.PhotoImage(src_img)

   self.c.itemconfigure(self.imgobj, image=self.img, anchor="nw")

Ознакомительная версия.


Роман Сузи читать все книги автора по порядку

Роман Сузи - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


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

Отзывы читателей о книге Язык программирования Python, автор: Роман Сузи. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.