Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from tkinter import ttk
- root = Tk() # Создаём корневой объект - окно
- root.title('Приложение Hello world для Tkinter') # Устанавливаем заголовк окна
- #root.iconbitmap(default = "icon_1.ico") # Установка иконки приложения, в левом верхнем углу, только в формате .ico
- #icon = PhotoImage(file = "icon_2.png") # Установка иконки приложения, в левом верхнем углу, только в формате .png
- #root.iconphoto(False, icon) # первый параметр указывает, нужно ли использовать эту иконку по умолчанию для всех приложений, а второй параметр это объект класса PhotoImage
- root.geometry("400x200+500+300") # Устанавливаем размеры окна, "ВысотахШирина+Х+Y"
- label = Label(text = "Привет мир, это первое приложение на Tkinter") # Устанавливаем текстовую метку в самом окне
- label.pack()
- #root.update_idletasks()
- #print(root.geometry()) # Печать размеров окна и его кординат на экране
- #root.resizable(False, False) # Задаём фиксированное значение окна (по высоте и ширине), первый параметр отвечает за ширину, второй за высоту
- #root.minsize(200, 150) # Минимальные размеры окна
- #root.maxsize(500, 400) # Максимальные размеры окна
- ## Перехват закрытия окна
- #def finish():
- # root.destroy() # ручное закрытие окна и всего приложения
- # print("Закрытие приложения")
- #root.protocol("WM_DELETE_WINDOW", finish) # мы отлавливаем событие "WM_DELETE_WINDOw", а потом вызываем функцию finish() для ручного закрытия всего приложения
- ## Атрибуты окна
- #root.attributes("-fullscreen", True) # Устнаовка полноэкранного режима для окна
- #root.attributes("-alpha", 0.5) # Установка уровня прозрачности для окна
- #root.attributes("-toolwindow", True) # Отключение верхней панели окна (за исключением заголовка и крестика для закрытия)
- # Стандартные виджеты из общего пакета tkinter
- # Виджет Button
- btn_standart = Button(text = "Кнопка из стандартного пакета tkinter") # Создаём кнопку из стандартного пакета tkinter
- btn_standart.pack() # Размещаем в окне приложения
- btn_ttk = ttk.Button(text = "Кнопка из пакета ttk") # Создаём кнопку из пакета ttk
- btn_ttk.pack() # Размещаем в окне приложения
- root.mainloop() # Метод для отображения окна и взаимодействия с пользователем
Advertisement
Comments
-
- from tkinter import *
- from tkinter import ttk
- root = Tk() # Создаём корневой объект - окно
- root.title('Приложение Hello world для Tkinter') # Устанавливаем заголовк окна
- #root.iconbitmap(default = "icon_1.ico") # Установка иконки приложения, в левом верхнем углу, только в формате .ico
- #icon = PhotoImage(file = "icon_2.png") # Установка иконки приложения, в левом верхнем углу, только в формате .png
- #root.iconphoto(False, icon) # первый параметр указывает, нужно ли использовать эту иконку по умолчанию для всех приложений, а второй параметр это объект класса PhotoImage
- root.geometry("400x200+500+300") # Устанавливаем размеры окна, "ВысотахШирина+Х+Y"
- #label = Label(text = "Привет мир, это первое приложение на Tkinter") # Устанавливаем текстовую метку в самом окне
- #label.pack()
- #root.update_idletasks()
- #print(root.geometry()) # Печать размеров окна и его кординат на экране
- #root.resizable(False, False) # Задаём фиксированное значение окна (по высоте и ширине), первый параметр отвечает за ширину, второй за высоту
- #root.minsize(200, 150) # Минимальные размеры окна
- #root.maxsize(500, 400) # Максимальные размеры окна
- ## Перехват закрытия окна
- #def finish():
- # root.destroy() # ручное закрытие окна и всего приложения
- # print("Закрытие приложения")
- #root.protocol("WM_DELETE_WINDOW", finish) # мы отлавливаем событие "WM_DELETE_WINDOw", а потом вызываем функцию finish() для ручного закрытия всего приложения
- ## Атрибуты окна
- #root.attributes("-fullscreen", True) # Устнаовка полноэкранного режима для окна
- #root.attributes("-alpha", 0.5) # Установка уровня прозрачности для окна
- #root.attributes("-toolwindow", True) # Отключение верхней панели окна (за исключением заголовка и крестика для закрытия)
- # Стандартные виджеты из общего пакета tkinter
- # Виджет Button
- #btn_standart = Button(text = "Кнопка из стандартного пакета tkinter") # Создаём кнопку из стандартного пакета tkinter
- #btn_standart.pack() # Размещаем в окне приложения
- #btn_ttk = ttk.Button(text = "Кнопка из пакета ttk") # Создаём кнопку из пакета ttk
- #btn_ttk = ttk.Button()
- #btn_ttk.pack() # Размещаем в окне приложения
- ## Устанавливаем параметр text
- #btn_ttk["text"] = "Send"
- ## Получаем значение параметра text
- #btn_ttk_text = btn_ttk["text"]
- #print(btn_ttk_text)
- ## Устанавливаем параметр text
- #btn_ttk.config(text = "Send Email")
- ## Получение информации о виджете
- #def print_info(widget, depth = 0): # Получение информации о всех виджетах, которые есть (их класс, размеры и координаты)
- # widget_class = widget.winfo_class()
- # widget_width = widget.winfo_width()
- # widget_height = widget.winfo_height()
- # widget_x = widget.winfo_x()
- # widget_y = widget.winfo_y()
- # print(' '*depth + f'{widget_class}: width = {widget_width}, height = {widget_height}, x = {widget_x}, y = {widget_y}')
- # for child in widget.winfo_children():
- # print_info(child, depth+1)
- #root.update() # Обновляем информацию о виджетах
- #print_info(root)
- ## Обработка нажатия кнопки
- #label = Label(text = 'Приложение "Кликер на Tkinter"') # Устанавливаем текстовую метку в самом окне
- #label.pack()
- #clicks = 0 # переменная, которая хранит количество кликов
- #def click_button():
- # global clicks
- # clicks += 1
- # # изменим текст кнопки
- # btn['text'] = f'Click Me {clicks} times' # изменяем текст кнопки на новый
- #btn = ttk.Button(text = 'Click Me', command = click_button)
- #btn.pack()
- ## Отключение кнопки
- #label = Label(text = 'Отключение кнопки')
- #label.pack()
- #root.geometry('250x200')
- #btn = ttk.Button(text = 'Click Me', state = ['disabled'])
- #btn.pack(expand=True)
- #btn.pack(expand=True, fill=BOTH)
- #btn.pack(expand=True, fill=X)
- #btn.pack(expand=True, fill=Y)
- #btn.pack(expand=True, anchor=N) # N = North
- #btn.pack(expand=True, anchor=S) # S = South
- #btn.pack(expand=True, anchor=E) # E = East
- #btn.pack(expand=True, anchor=W) # W = West
- #btn.pack(expand=True, anchor=NE) # NE = North-East
- #btn.pack(expand=True, anchor=NW) # NW = North-West
- #btn.pack(expand=True, anchor=SE) # SE = South-East
- #btn.pack(expand=True, anchor=SW) # SW = South-West
- #btn.pack(side = TOP)
- #btn.pack(side = BOTTOM)
- #btn.pack(side = LEFT)
- #btn.pack(side = RIGTH)
- ## Позиционирование Grid
- root.geometry('250x200')
- for c in range(3): root.columnconfigure(index = c, weight = 1)
- for r in range(3): root.rowconfigure(index = r, weight=1)
- for r in range(3):
- for c in range(3):
- btn = ttk.Button(text = f'[{r}, {c}]')
- btn.grid(row = r, column = c)
- root.mainloop() # Метод для отображения окна и взаимодействия с пользователем
-
- from tkinter import *
- from tkinter import ttk
- root = Tk() # Создаём корневой объект - окно
- root.title('Приложение Hello world для Tkinter') # Устанавливаем заголовк окна
- #root.iconbitmap(default = "icon_1.ico") # Установка иконки приложения, в левом верхнем углу, только в формате .ico
- #icon = PhotoImage(file = "icon_2.png") # Установка иконки приложения, в левом верхнем углу, только в формате .png
- #root.iconphoto(False, icon) # первый параметр указывает, нужно ли использовать эту иконку по умолчанию для всех приложений, а второй параметр это объект класса PhotoImage
- root.geometry("400x200+500+300") # Устанавливаем размеры окна, "ВысотахШирина+Х+Y"
- #label = Label(text = "Привет мир, это первое приложение на Tkinter") # Устанавливаем текстовую метку в самом окне
- #label.pack()
- #root.update_idletasks()
- #print(root.geometry()) # Печать размеров окна и его кординат на экране
- #root.resizable(False, False) # Задаём фиксированное значение окна (по высоте и ширине), первый параметр отвечает за ширину, второй за высоту
- #root.minsize(200, 150) # Минимальные размеры окна
- #root.maxsize(500, 400) # Максимальные размеры окна
- ## Перехват закрытия окна
- #def finish():
- # root.destroy() # ручное закрытие окна и всего приложения
- # print("Закрытие приложения")
- #root.protocol("WM_DELETE_WINDOW", finish) # мы отлавливаем событие "WM_DELETE_WINDOw", а потом вызываем функцию finish() для ручного закрытия всего приложения
- ## Атрибуты окна
- #root.attributes("-fullscreen", True) # Устнаовка полноэкранного режима для окна
- #root.attributes("-alpha", 0.5) # Установка уровня прозрачности для окна
- #root.attributes("-toolwindow", True) # Отключение верхней панели окна (за исключением заголовка и крестика для закрытия)
- # Стандартные виджеты из общего пакета tkinter
- # Виджет Button
- #btn_standart = Button(text = "Кнопка из стандартного пакета tkinter") # Создаём кнопку из стандартного пакета tkinter
- #btn_standart.pack() # Размещаем в окне приложения
- #btn_ttk = ttk.Button(text = "Кнопка из пакета ttk") # Создаём кнопку из пакета ttk
- #btn_ttk = ttk.Button()
- #btn_ttk.pack() # Размещаем в окне приложения
- ## Устанавливаем параметр text
- #btn_ttk["text"] = "Send"
- ## Получаем значение параметра text
- #btn_ttk_text = btn_ttk["text"]
- #print(btn_ttk_text)
- ## Устанавливаем параметр text
- #btn_ttk.config(text = "Send Email")
- ## Получение информации о виджете
- #def print_info(widget, depth = 0): # Получение информации о всех виджетах, которые есть (их класс, размеры и координаты)
- # widget_class = widget.winfo_class()
- # widget_width = widget.winfo_width()
- # widget_height = widget.winfo_height()
- # widget_x = widget.winfo_x()
- # widget_y = widget.winfo_y()
- # print(' '*depth + f'{widget_class}: width = {widget_width}, height = {widget_height}, x = {widget_x}, y = {widget_y}')
- # for child in widget.winfo_children():
- # print_info(child, depth+1)
- #root.update() # Обновляем информацию о виджетах
- #print_info(root)
- ## Обработка нажатия кнопки
- #label = Label(text = 'Приложение "Кликер на Tkinter"') # Устанавливаем текстовую метку в самом окне
- #label.pack()
- #clicks = 0 # переменная, которая хранит количество кликов
- #def click_button():
- # global clicks
- # clicks += 1
- # # изменим текст кнопки
- # btn['text'] = f'Click Me {clicks} times' # изменяем текст кнопки на новый
- #btn = ttk.Button(text = 'Click Me', command = click_button)
- #btn.pack()
- ## Отключение кнопки
- #label = Label(text = 'Отключение кнопки')
- #label.pack()
- #root.geometry('250x200')
- #btn = ttk.Button(text = 'Click Me', state = ['disabled'])
- #btn.pack(expand=True)
- #btn.pack(expand=True, fill=BOTH)
- #btn.pack(expand=True, fill=X)
- #btn.pack(expand=True, fill=Y)
- #btn.pack(expand=True, anchor=N) # N = North
- #btn.pack(expand=True, anchor=S) # S = South
- #btn.pack(expand=True, anchor=E) # E = East
- #btn.pack(expand=True, anchor=W) # W = West
- #btn.pack(expand=True, anchor=NE) # NE = North-East
- #btn.pack(expand=True, anchor=NW) # NW = North-West
- #btn.pack(expand=True, anchor=SE) # SE = South-East
- #btn.pack(expand=True, anchor=SW) # SW = South-West
- #btn.pack(side = TOP)
- #btn.pack(side = BOTTOM)
- #btn.pack(side = LEFT)
- #btn.pack(side = RIGTH)
- ## Позиционирование Grid
- #root.geometry('250x200')
- #for c in range(3): root.columnconfigure(index = c, weight = 1)
- #for r in range(3): root.rowconfigure(index = r, weight=1)
- #for r in range(3):
- # for c in range(3):
- # btn = ttk.Button(text = f'[{r}, {c}]')
- # btn.grid(row = r, column = c)
- ## Обработка событий
- #def click():
- # print('Hello world')
- #btn = ttk.Button(text = 'Click', command = click)
- #btn.pack()
- ## Привязка событий
- ## bind(<событие>, <функция>)
- ## Какие могут быть типы событий? (низкоуровневые события)
- ## Active - окно становится активным
- ## Deactive - окно становится неактивным
- ## MouseWheel - прокрутка колёсика мышки
- ## KeyPress - нажатие клавиши на клавиатуре
- ## KeyRelease - освобождние клавиши на клавиатуре
- ## ButtonPress - нажатие кнопки мыши
- ## ButtonRelease - освобождение кнопки мышки
- ## Motion - движение мыши
- ## Configure - изменение размера и положения виджета
- ## Destroy - уничтожение виджета
- ## FocusIn - получение фокуса
- ## FocusOut - потеря фокуса
- ## Enter - указатель мыши вошёл в пределы виджета
- ## Leave - указатель мыши покинул пределы виджета
- #def entered(event):
- # btn['text'] = 'Entered'
- #def left(event):
- # btn['text'] = 'Left'
- #btn = ttk.Button(text = 'Click')
- #btn.pack(anchor = CENTER, expand = 1)
- #btn.bind('<Enter>', entered)
- #btn.bind('<Leave>', left)
- ## Шаблоны событий
- # <модификатор-имя_события-клавиша>
- # Модификатор события:
- # Alt - нажата клавиша Alt
- # Control, Shift, Any и т.д.
- def single_click_left(event):
- btn['text'] = 'Single Click Left'
- def double_click_left(event):
- btn['text'] = 'Double Click Left'
- def single_click_right(event):
- btn['text'] = 'Single Click Right'
- def double_click_right(event):
- btn['text'] = 'Double Click Right'
- def left(event):
- btn['text'] = 'Left'
- def entered(event):
- btn['text'] = 'Entered'
- btn = ttk.Button(text = 'Click')
- btn.pack(anchor = CENTER, expand = 1)
- btn.bind('<ButtonPress-1>', single_click_left) # Левая кнопка мыши
- btn.bind('<Double-ButtonPress-1>', double_click_left) # ЛКМ
- btn.bind('<ButtonPress-3>', single_click_right) # ПКМ
- btn.bind('<Double-ButtonPress-3>', double_click_right) # ПКМ
- btn.bind('<Leave>', left)
- btn.bind('<Enter>', entered)
- root.mainloop() # Метод для отображения окна и взаимодействия с пользователем
-
- ## Глобальная регистрация событий
- clicks = 0
- def clicked(event):
- global clicks
- clicks = clicks + 1
- btn['text'] = f'{clicks} Clicks'
- for r in range(3):
- for c in range(3):
- btn = ttk.Button(text = f'[{r}, {c}]')
- btn.grid(row = r, column = c)
- #btn = ttk.Button(text = 'Click me')
- #btn.pack(anchor = CENTER, expand = 1)
- ## привязка события к кнопкам ttk.Button
- root.bind_class('TButton', '<Double-ButtonPress-1>', clicked)
- root.mainloop() # Метод для отображения окна и взаимодействия с пользователем
-
- ## Удаление события
- root.unbind(event)
-
- ## Виджет Lable
- #label = ttk.Label(text = 'Hello world')
- # Установка шрифта: font = ('имя шрифта', размер шрифта)
- #label = ttk.Label(text = 'Hello world', font = ('Robot', 14))
- #label = ttk.Label(text = 'Hello world', font = ('Arial', 14))
- #label = ttk.Label(text = 'Hello world', font = ('Times New Roman', 14))
- #label.pack()
-
- ## Утсановка изображения
- logo = PhotoImage(file = './icon_2.png')
- label = ttk.Label(image = logo)
- label.pack()
-
- ## Установка изображения и текста
- logo = PhotoImage(file = './icon_2.png')
- label = ttk.Label(image = logo, text = 'Привет мир, мы вставили лого', compound = 'bottom')
- label.pack()
- # compound must be 'none', 'text', 'image', 'center', 'top', 'bottom', 'left' or 'right'
-
- ## Стилизация
- #label = ttk.Label(text = 'Hello world', borderwidth = 2, relief='ridge')
- #label.pack()
- # Установка цвета фона и текста
- label = ttk.Label(text = 'Hello world', background = '#FFCDD2', foreground = '#B71C1C', padding = 8)
- label.pack()
-
- ## Поле ввода Entry
- # Простейшее текстовое поле
- ttk.Entry().pack(anchor=NW, padx = 22, pady = 22)
-
- # Получение введённого текста
- def show_msg():
- label['text'] = entry.get() # получаем введённый текст
- entry = ttk.Entry()
- entry.pack(anchor=NW, padx = 22, pady = 22)
- btn = ttk.Button(text = 'Click', command = show_msg)
- btn.pack(anchor=NW, padx = 35, pady = 10)
- label = ttk.Label()
- label.pack(anchor=NW, padx = 22, pady = 10)
-
- ## Вставка и удаление текста
- def clear():
- entry.delete(0, END) # удаление введённого тектста
- def display():
- label['text'] = entry.get() # получение введённого текста
- entry = ttk.Entry()
- entry.pack(anchor=NW, padx = 22, pady = 22)
- label = ttk.Label()
- label.pack(anchor=NW, padx = 22, pady = 10)
- # вставка начальных данных
- entry.insert(0, 'Hello World')
- display_button = ttk.Button(text = 'Display', command=display)
- display_button.pack(side = LEFT, anchor = N, padx = 22, pady = 22)
- clear_button = ttk.Button(text = 'Clear', command=clear)
- clear_button.pack(side = LEFT, anchor = N, padx = 22, pady = 22)
-
- ## Валидация значения
- from tkinter import *
- from tkinter import ttk
- import re
- def is_validate(new_val):
- result = re.match('^\+\d{0,11}$', new_val) is not None
- if not result and len(new_val) <= 12:
- errmsg.set('Номер телефона должен быть в формате +xxxxxxxxxxx, где x представляет собой цифру')
- else:
- errmsg.set(' ')
- return result
- check = (root.register(is_validate), '%P')
- errmsg = StringVar() # Вывод строчки
- phone_entry = ttk.Entry(validate = 'key', validatecommand=check)
- phone_entry.pack(padx = 5, pady = 5, anchor=NW)
- error_label = ttk.Label(foreground='red', textvariable=errmsg, wraplength=250)
- error_label.pack(padx = 5, pady = 5, anchor = NW)
- root.mainloop()
-
- С помощью параметра validate конструктора Entry можно задать, когда проводить валидацию введенного значения. Этот параметр может принимать следующие значения:
- none: отсутствие валидации, значение по умолчанию
- focus: валидация при получении фокуса
- focusin: валидация при изменении фокуса
- focusout: валидация при потере фокуса
- key: валидация при каждом вводе нового символа
- all: валидация при измении фокуса и вводе символов в поле
- Параметр validatecommand позволяет установить команду валидации.
-
- ## Синхронная смена значения у label и button через переменную message
- message = StringVar()
- label = ttk.Label(textvariable=message)
- label.pack(anchor = NW, padx = 6, pady = 6)
- entry = ttk.Entry(textvariable=message)
- entry.pack(anchor = NW, padx = 6, pady = 6)
- button = ttk.Button(textvariable=message)
- button.pack(side = LEFT, anchor = N, padx = 6, pady = 6)
-
- ## Изменение значения кнопки, через переменную
- def click_button():
- value = click.get() # получение значения
- click.set(value + 1) # устанавливаем новое значение
- click = IntVar(value = 0) # значение по умолчанию
- btn=ttk.Button(textvariable=click, command=click_button)
- btn.pack(anchor = CENTER, expand = 1)
-
- ## Отслеживание изменения переменной
- # trace_add(trace_mode, function)
- # trace_mode: write, read, unset
- # function - функция, которая будет вызываться при возникновении события из параметра trace_mode
- def check(*args):
- print(name)
- if name.get() == 'admin':
- result.set('запрещённое имя')
- else:
- result.set('нормальное имя')
- name = StringVar()
- result = StringVar()
- name_entry = ttk.Entry(textvariable=name)
- name_entry.pack(padx = 5, pady = 5, anchor = NW)
- check_label = ttk.Label(textvariable=result)
- check_label.pack(padx = 5, pady = 5, anchor = NW)
- # отслеживание изменения значения переменной name
- name.trace_add('read', check)
-
- ## Checkbutton
- enabled = IntVar()
- enabled_checkbutton = ttk.Checkbutton(text = 'Вкл', variable=enabled)
- enabled_checkbutton.pack(padx = 6, pady = 6, anchor = NW)
- enabled_label = ttk.Label(textvariable=enabled)
- enabled_label.pack(padx = 6, pady = 6, anchor = NW)
-
- ## Обрабоботка изменения флажка
- from tkinter.messagebox import showinfo
- def checkbutton_changed():
- if enabled.get() == 1:
- showinfo(title = "Info", message = "Включено")
- else:
- showinfo(title = "Info", message = "Отключено")
- enabled = IntVar()
- enabled_checkbutton = ttk.Checkbutton(text = 'Вкл', variable=enabled, command = checkbutton_changed)
- enabled_checkbutton.pack(padx = 6, pady = 6, anchor = NW)
-
Comment was deleted
-
- ## onvalue и offvalue
- from tkinter.messagebox import showinfo
- def checkbutton_changed():
- showinfo(title = 'INFO', message=enabled.get())
- enabled = StringVar()
- enabled_checkbutton = ttk.Checkbutton(text = 'Вкл', variable=enabled, command = checkbutton_changed)
- enabled_checkbutton.pack(padx = 6, pady = 6, anchor = NW)
-
- ## "Поиграем" с текстом флажка
- enabled_on = "Включено"
- enabled_off = "Отключено"
- enabled = StringVar(value = enabled_on)
- enabled_checkbutton = ttk.Checkbutton(textvariable=enabled, variable=enabled, offvalue=enabled_off, onvalue=enabled_on)
- enabled_checkbutton.pack(padx = 6, pady = 6, anchor = NW)
-
- ## Обработка нескольких флажков
- def select():
- result = 'Выбрано: '
- if python.get() == 1:
- result = f'{result} Python'
- if javascript.get() == 1:
- result = f'{result} JavaScript'
- if java.get() == 1:
- result = f'{result} Java'
- languages.set(result)
- position = {'padx': 6, 'pady': 6, 'anchor': NW}
- languages = StringVar()
- languages_label = ttk.Label(textvariable=languages)
- languages_label.pack(**position)
- python = IntVar()
- python_checkbutton = ttk.Checkbutton(text = 'Python', variable = python, command = select)
- python_checkbutton.pack(**position)
- javascript = IntVar()
- javascript_checkbutton = ttk.Checkbutton(text = 'JavaScript', variable = javascript, command = select)
- javascript_checkbutton.pack(**position)
- java = IntVar()
- java_checkbutton = ttk.Checkbutton(text = 'Java', variable = java, command = select)
- java_checkbutton.pack(**position)
Add Comment
Please, Sign In to add comment