Координатная плоскость с графиком (масштабирование 1):
import tkinter import math def F(x): return x ** 3 WINWIDTH = 600 WINHEIGHT = 400 ox = 100 oy = 200 master = tkinter.Tk() canvas = tkinter.Canvas(master, bg=’white’, height=WINHEIGHT, width=WINWIDTH) #canvas.create_line((0, 0), (WINWIDTH, WINHEIGHT), fill=’red’) li = [] x1 = -10 x2 = 50 minx = x1 maxx = x2 while x1 # my = 30 # if ox > (WINWIDTH // 2): mx = ox // dx # else: mx = (WINWIDTH — ox) // dx # if oy > (WINHEIGHT // 2): my = oy // dy # else: my = (WINHEIGHT — oy) // dy # if mx == 0: mx = 1 if my == 0: my = 1 h = 4 ht = 14 #mx = 45 #my = 4 dots = [] for x, y in li: dots.append((ox + x * mx, oy — y * my)) print(mx, my, dy, li) print(dots) canvas.create_line(dots, fill=’blue’) # canvas.create_line((0, oy), (WINWIDTH, oy), fill=’black’) # canvas.create_line((ox, 0), (ox, WINWIDTH), fill=’black’) for i in range(1, 11): # canvas.create_line((ox + round(i * mx), oy — h), (ox + round(i * mx), oy + h), fill=»red») # canvas.create_line((ox — round(i * mx), oy — h), (ox — round(i * mx), oy + h), fill=»red») canvas.create_text(ox — round(i * mx), oy + ht, text=str(i * -mx)) canvas.create_text(ox + round(i * mx), oy + ht, text=str(i * mx)) canvas.create_line((ox + h, oy — round(i * my)), (ox — h, oy — round(i * my)), fill=’green’) # canvas.create_line((ox + h, oy + round(i * my)), (ox — h, oy + round(i * my)), fill=’green’) canvas.create_text(ox + ht, oy — round(i * my), text=str(i * -my)) canvas.create_text(ox + ht, oy + round(i * my), text=str(i * my)) canvas.pack() master.mainloop()
Наброски для отображения функции в виде графика:
Изучение TKinter за 8 минут / Разработка GUI программы на Python
import tkinter # ~~~~~~~~~~~~~~~~~~~~~~~~~ t1 = 1 t2 = 10 h = 1.5 li = [] for t in range(t1, t2 + 1, h): zf = F(t, n, k) li.append((t, zf)) li2 = [] for x, y in li: li2.append((int(x * 10), int(y * 2.5))) #~~~~~~~~~~~~~~~~~~~~~~~~~ canvas.create_line(li2, fill=»blue»)
Источник: sch61.ru
Библиотека Tkinter в Python
Как и любой модуль, tkinter в Python можно импортировать двумя способами: командами import tkinter или from tkinter import * (имя модуля пишется со строчной буквы).
Рекомендуется использовать второй способ, т.к. это позволит не указывать каждый раз имя модуля при обращении к объектам, которые в нем содержаться. Пример:
from tkinter import *
Создание главного окна
Объект окна верхнего уровня создается при обращении к классу Tk модуля tkinter. Переменную, связанную с объектом-окном принято называть root (но можно назвать и другим именем). Рассмотрим пример создания главного окна:
При запуске будет выведено:
Если не установить геометрию окна, то размер окна будет подогнан под размер виджетов, содержащихся в окне.
Работа с виджетами
В библиотеки tkinter существует множества виджетов. Для примера рассмотрим виджет «Button».
У класса Button есть обязательный параметр — объект, которому кнопка принадлежит (у нас это окно root). Полный список виджетов мы рассмотрим в следующих статьях. Пример создания кнопки:
but1 = Button(root)
У кнопки есть много свойств: надпись, цвет фона, размер и т.д. Например, добавим текст нашей кнопке:
but1[«text»] = «Название кнопки»
Чтобы наша кнопка появилась в окне программы необходимо использовать метод pack(). Добавим в наше окно кнопку:
Если вы заметили, то при нажатии на кнопку ничего не происходит т.к. у нас нету события. Действия(алгоритм) часто оформляют в виде функции, а затем вызывают необходимым событием. Создадим функцию:
def hello(event): print(«Привет, программист!»)
Параметр event — это какое-либо событие. Событие нажатия левой кнопки мыши выглядит так: . Требуется связать это событие с обработчиком (функцией hello). Для связи предназначен метод bind. Синтаксис:
but1.bind(«»,hello)
Для закрепления теоретического материала соберем все наши примеры в одну программу. Листинг:
Если запустить данную программу и нажать на кнопку, то в консоли появится строчка «Привет, программист!».
Строчка root.mainloop() должна быть всегда в конце скрипта. Окно не появится, пока мы не вызовим метод mainloop().
Знакомство с Tkinter:
Источник: it-black.ru
Создание холста Tkinter в Python
Давайте узнаем, как создать холст Tkinter в этом руководстве.
Что такое Tkinter?
Tkinter — это интерфейс Python, с помощью которого мы можем создавать GUI (графические пользовательские интерфейсы).
Эта библиотека является кроссплатформенной, а это означает, что она является идеальным выбором для разработчиков Python, поскольку код вашего приложения теперь может быть независимым от платформы.
Самое приятное в этом то, что он уже предустановлен вместе с Python! Так что устанавливать это отдельно не нужно.
Но на всякий случай проверим, правильно ли работает Tkinter в нашей системе. Поэтому перейдите в командную строку Windows (или Linux / Mac) и введите:
python -m tkinter
Примерно такое окно должно появиться, указывая, что Tkinter работает:
И если вы хотите использовать эту библиотеку, это всего одна строчка!
import tkinter
Теперь мы можем приступить к написанию нашей первой программы на Tkinter. Для этого я буду создавать простую программу, отображающую изображения на экране.
Шаг 1. Создайте приложение и дескриптор главного объекта
Прежде чем мы сможем создать наш холст, нам нужно создать экземпляр объекта Python Tkinter . Конструктор по умолчанию создаст экземпляр объекта Tkinter.
Этот объект обычно называют корневым объектом (главным объектом). Это потому, что ваше приложение с графическим интерфейсом использует все вызовы через этот объект. Ваше приложение не может работать без этого объекта.
Чтобы создать мастер-объект, сделайте следующее:
import tkinter as tk # Create our master object to the Application master = tk.Tk()
Теперь мы создали мастер-объект. Теперь для запуска приложения такие программы обычно представляют собой цикл обработки событий.
Теперь нам также нужен дескриптор нашего приложения, чтобы приложение могло использовать этот объект и передавать его в цикл обработки событий.
Это есть в классе tk.Frame . Итак, мы создадим класс Application, который наследует этот класс. И теперь мы можем напрямую вызвать основной цикл из нашего объекта приложения.
class Application(tk.Frame): def __init__(self, master=None): # We need the master object to # initialize important stuff super().__init__(master) # Call tk.Frame.__init__(master) self.master = master # Update the master object after tk.Frame() makes necessary changes to it