VolinNilov

Tkinter Ivan

Dec 16th, 2023 (edited)
825
0
Never
22
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.23 KB | None | 0 0
  1. from tkinter import *
  2. from tkinter import ttk
  3.  
  4. root = Tk() # Создаём корневой объект - окно
  5.  
  6. root.title('Приложение Hello world для Tkinter') # Устанавливаем заголовк окна
  7.  
  8. #root.iconbitmap(default = "icon_1.ico") # Установка иконки приложения, в левом верхнем углу, только в формате .ico
  9.  
  10. #icon = PhotoImage(file = "icon_2.png") # Установка иконки приложения, в левом верхнем углу, только в формате .png
  11. #root.iconphoto(False, icon) # первый параметр указывает, нужно ли использовать эту иконку по умолчанию для всех приложений, а второй параметр это объект класса PhotoImage
  12.  
  13. root.geometry("400x200+500+300") # Устанавливаем размеры окна, "ВысотахШирина+Х+Y"
  14.  
  15. label = Label(text = "Привет мир, это первое приложение на Tkinter") # Устанавливаем текстовую метку в самом окне
  16. label.pack()
  17.  
  18. #root.update_idletasks()
  19. #print(root.geometry()) # Печать размеров окна и его кординат на экране
  20.  
  21. #root.resizable(False, False) # Задаём фиксированное значение окна (по высоте и ширине), первый параметр отвечает за ширину, второй за высоту
  22.  
  23. #root.minsize(200, 150) # Минимальные размеры окна
  24. #root.maxsize(500, 400) # Максимальные размеры окна
  25.  
  26. ## Перехват закрытия окна
  27. #def finish():
  28. #    root.destroy() # ручное закрытие окна и всего приложения
  29. #    print("Закрытие приложения")
  30. #root.protocol("WM_DELETE_WINDOW", finish) # мы отлавливаем событие "WM_DELETE_WINDOw", а потом вызываем функцию finish() для ручного закрытия всего приложения
  31.  
  32. ## Атрибуты окна
  33. #root.attributes("-fullscreen", True) # Устнаовка полноэкранного режима для окна
  34. #root.attributes("-alpha", 0.5) # Установка уровня прозрачности для окна
  35. #root.attributes("-toolwindow", True) # Отключение верхней панели окна (за исключением заголовка и крестика для закрытия)
  36.  
  37. # Стандартные виджеты из общего пакета tkinter
  38. # Виджет Button
  39. btn_standart = Button(text = "Кнопка из стандартного пакета tkinter") # Создаём кнопку из стандартного пакета tkinter
  40. btn_standart.pack() # Размещаем в окне приложения
  41.  
  42. btn_ttk = ttk.Button(text = "Кнопка из пакета ttk") # Создаём кнопку из пакета ttk
  43. btn_ttk.pack() # Размещаем в окне приложения
  44.  
  45. root.mainloop() # Метод для отображения окна и взаимодействия с пользователем
Advertisement
Comments
  • VolinNilov
    2 years
    # text 6.01 KB | 0 0
    1. from tkinter import *
    2. from tkinter import ttk
    3.  
    4. root = Tk() # Создаём корневой объект - окно
    5.  
    6. root.title('Приложение Hello world для Tkinter') # Устанавливаем заголовк окна
    7.  
    8. #root.iconbitmap(default = "icon_1.ico") # Установка иконки приложения, в левом верхнем углу, только в формате .ico
    9.  
    10. #icon = PhotoImage(file = "icon_2.png") # Установка иконки приложения, в левом верхнем углу, только в формате .png
    11. #root.iconphoto(False, icon) # первый параметр указывает, нужно ли использовать эту иконку по умолчанию для всех приложений, а второй параметр это объект класса PhotoImage
    12.  
    13. root.geometry("400x200+500+300") # Устанавливаем размеры окна, "ВысотахШирина+Х+Y"
    14.  
    15. #label = Label(text = "Привет мир, это первое приложение на Tkinter") # Устанавливаем текстовую метку в самом окне
    16. #label.pack()
    17.  
    18. #root.update_idletasks()
    19. #print(root.geometry()) # Печать размеров окна и его кординат на экране
    20.  
    21. #root.resizable(False, False) # Задаём фиксированное значение окна (по высоте и ширине), первый параметр отвечает за ширину, второй за высоту
    22.  
    23. #root.minsize(200, 150) # Минимальные размеры окна
    24. #root.maxsize(500, 400) # Максимальные размеры окна
    25.  
    26. ## Перехват закрытия окна
    27. #def finish():
    28. # root.destroy() # ручное закрытие окна и всего приложения
    29. # print("Закрытие приложения")
    30. #root.protocol("WM_DELETE_WINDOW", finish) # мы отлавливаем событие "WM_DELETE_WINDOw", а потом вызываем функцию finish() для ручного закрытия всего приложения
    31.  
    32. ## Атрибуты окна
    33. #root.attributes("-fullscreen", True) # Устнаовка полноэкранного режима для окна
    34. #root.attributes("-alpha", 0.5) # Установка уровня прозрачности для окна
    35. #root.attributes("-toolwindow", True) # Отключение верхней панели окна (за исключением заголовка и крестика для закрытия)
    36.  
    37. # Стандартные виджеты из общего пакета tkinter
    38. # Виджет Button
    39. #btn_standart = Button(text = "Кнопка из стандартного пакета tkinter") # Создаём кнопку из стандартного пакета tkinter
    40. #btn_standart.pack() # Размещаем в окне приложения
    41.  
    42. #btn_ttk = ttk.Button(text = "Кнопка из пакета ttk") # Создаём кнопку из пакета ttk
    43. #btn_ttk = ttk.Button()
    44. #btn_ttk.pack() # Размещаем в окне приложения
    45.  
    46. ## Устанавливаем параметр text
    47. #btn_ttk["text"] = "Send"
    48. ## Получаем значение параметра text
    49. #btn_ttk_text = btn_ttk["text"]
    50. #print(btn_ttk_text)
    51.  
    52. ## Устанавливаем параметр text
    53. #btn_ttk.config(text = "Send Email")
    54.  
    55. ## Получение информации о виджете
    56. #def print_info(widget, depth = 0): # Получение информации о всех виджетах, которые есть (их класс, размеры и координаты)
    57. # widget_class = widget.winfo_class()
    58. # widget_width = widget.winfo_width()
    59. # widget_height = widget.winfo_height()
    60. # widget_x = widget.winfo_x()
    61. # widget_y = widget.winfo_y()
    62. # print(' '*depth + f'{widget_class}: width = {widget_width}, height = {widget_height}, x = {widget_x}, y = {widget_y}')
    63. # for child in widget.winfo_children():
    64. # print_info(child, depth+1)
    65. #root.update() # Обновляем информацию о виджетах
    66. #print_info(root)
    67.  
    68. ## Обработка нажатия кнопки
    69. #label = Label(text = 'Приложение "Кликер на Tkinter"') # Устанавливаем текстовую метку в самом окне
    70. #label.pack()
    71. #clicks = 0 # переменная, которая хранит количество кликов
    72. #def click_button():
    73. # global clicks
    74. # clicks += 1
    75. # # изменим текст кнопки
    76. # btn['text'] = f'Click Me {clicks} times' # изменяем текст кнопки на новый
    77. #btn = ttk.Button(text = 'Click Me', command = click_button)
    78. #btn.pack()
    79.  
    80. ## Отключение кнопки
    81. #label = Label(text = 'Отключение кнопки')
    82. #label.pack()
    83. #root.geometry('250x200')
    84. #btn = ttk.Button(text = 'Click Me', state = ['disabled'])
    85. #btn.pack(expand=True)
    86. #btn.pack(expand=True, fill=BOTH)
    87. #btn.pack(expand=True, fill=X)
    88. #btn.pack(expand=True, fill=Y)
    89. #btn.pack(expand=True, anchor=N) # N = North
    90. #btn.pack(expand=True, anchor=S) # S = South
    91. #btn.pack(expand=True, anchor=E) # E = East
    92. #btn.pack(expand=True, anchor=W) # W = West
    93. #btn.pack(expand=True, anchor=NE) # NE = North-East
    94. #btn.pack(expand=True, anchor=NW) # NW = North-West
    95. #btn.pack(expand=True, anchor=SE) # SE = South-East
    96. #btn.pack(expand=True, anchor=SW) # SW = South-West
    97. #btn.pack(side = TOP)
    98. #btn.pack(side = BOTTOM)
    99. #btn.pack(side = LEFT)
    100. #btn.pack(side = RIGTH)
    101.  
    102.  
    103. ## Позиционирование Grid
    104. root.geometry('250x200')
    105.  
    106. for c in range(3): root.columnconfigure(index = c, weight = 1)
    107. for r in range(3): root.rowconfigure(index = r, weight=1)
    108.  
    109. for r in range(3):
    110. for c in range(3):
    111. btn = ttk.Button(text = f'[{r}, {c}]')
    112. btn.grid(row = r, column = c)
    113.  
    114.  
    115.  
    116.  
    117. root.mainloop() # Метод для отображения окна и взаимодействия с пользователем
    118.  
  • VolinNilov
    2 years
    # text 8.44 KB | 0 0
    1. from tkinter import *
    2. from tkinter import ttk
    3.  
    4. root = Tk() # Создаём корневой объект - окно
    5.  
    6. root.title('Приложение Hello world для Tkinter') # Устанавливаем заголовк окна
    7.  
    8. #root.iconbitmap(default = "icon_1.ico") # Установка иконки приложения, в левом верхнем углу, только в формате .ico
    9.  
    10. #icon = PhotoImage(file = "icon_2.png") # Установка иконки приложения, в левом верхнем углу, только в формате .png
    11. #root.iconphoto(False, icon) # первый параметр указывает, нужно ли использовать эту иконку по умолчанию для всех приложений, а второй параметр это объект класса PhotoImage
    12.  
    13. root.geometry("400x200+500+300") # Устанавливаем размеры окна, "ВысотахШирина+Х+Y"
    14.  
    15. #label = Label(text = "Привет мир, это первое приложение на Tkinter") # Устанавливаем текстовую метку в самом окне
    16. #label.pack()
    17.  
    18. #root.update_idletasks()
    19. #print(root.geometry()) # Печать размеров окна и его кординат на экране
    20.  
    21. #root.resizable(False, False) # Задаём фиксированное значение окна (по высоте и ширине), первый параметр отвечает за ширину, второй за высоту
    22.  
    23. #root.minsize(200, 150) # Минимальные размеры окна
    24. #root.maxsize(500, 400) # Максимальные размеры окна
    25.  
    26. ## Перехват закрытия окна
    27. #def finish():
    28. # root.destroy() # ручное закрытие окна и всего приложения
    29. # print("Закрытие приложения")
    30. #root.protocol("WM_DELETE_WINDOW", finish) # мы отлавливаем событие "WM_DELETE_WINDOw", а потом вызываем функцию finish() для ручного закрытия всего приложения
    31.  
    32. ## Атрибуты окна
    33. #root.attributes("-fullscreen", True) # Устнаовка полноэкранного режима для окна
    34. #root.attributes("-alpha", 0.5) # Установка уровня прозрачности для окна
    35. #root.attributes("-toolwindow", True) # Отключение верхней панели окна (за исключением заголовка и крестика для закрытия)
    36.  
    37. # Стандартные виджеты из общего пакета tkinter
    38. # Виджет Button
    39. #btn_standart = Button(text = "Кнопка из стандартного пакета tkinter") # Создаём кнопку из стандартного пакета tkinter
    40. #btn_standart.pack() # Размещаем в окне приложения
    41.  
    42. #btn_ttk = ttk.Button(text = "Кнопка из пакета ttk") # Создаём кнопку из пакета ttk
    43. #btn_ttk = ttk.Button()
    44. #btn_ttk.pack() # Размещаем в окне приложения
    45.  
    46. ## Устанавливаем параметр text
    47. #btn_ttk["text"] = "Send"
    48. ## Получаем значение параметра text
    49. #btn_ttk_text = btn_ttk["text"]
    50. #print(btn_ttk_text)
    51.  
    52. ## Устанавливаем параметр text
    53. #btn_ttk.config(text = "Send Email")
    54.  
    55. ## Получение информации о виджете
    56. #def print_info(widget, depth = 0): # Получение информации о всех виджетах, которые есть (их класс, размеры и координаты)
    57. # widget_class = widget.winfo_class()
    58. # widget_width = widget.winfo_width()
    59. # widget_height = widget.winfo_height()
    60. # widget_x = widget.winfo_x()
    61. # widget_y = widget.winfo_y()
    62. # print(' '*depth + f'{widget_class}: width = {widget_width}, height = {widget_height}, x = {widget_x}, y = {widget_y}')
    63. # for child in widget.winfo_children():
    64. # print_info(child, depth+1)
    65. #root.update() # Обновляем информацию о виджетах
    66. #print_info(root)
    67.  
    68. ## Обработка нажатия кнопки
    69. #label = Label(text = 'Приложение "Кликер на Tkinter"') # Устанавливаем текстовую метку в самом окне
    70. #label.pack()
    71. #clicks = 0 # переменная, которая хранит количество кликов
    72. #def click_button():
    73. # global clicks
    74. # clicks += 1
    75. # # изменим текст кнопки
    76. # btn['text'] = f'Click Me {clicks} times' # изменяем текст кнопки на новый
    77. #btn = ttk.Button(text = 'Click Me', command = click_button)
    78. #btn.pack()
    79.  
    80. ## Отключение кнопки
    81. #label = Label(text = 'Отключение кнопки')
    82. #label.pack()
    83. #root.geometry('250x200')
    84. #btn = ttk.Button(text = 'Click Me', state = ['disabled'])
    85. #btn.pack(expand=True)
    86. #btn.pack(expand=True, fill=BOTH)
    87. #btn.pack(expand=True, fill=X)
    88. #btn.pack(expand=True, fill=Y)
    89. #btn.pack(expand=True, anchor=N) # N = North
    90. #btn.pack(expand=True, anchor=S) # S = South
    91. #btn.pack(expand=True, anchor=E) # E = East
    92. #btn.pack(expand=True, anchor=W) # W = West
    93. #btn.pack(expand=True, anchor=NE) # NE = North-East
    94. #btn.pack(expand=True, anchor=NW) # NW = North-West
    95. #btn.pack(expand=True, anchor=SE) # SE = South-East
    96. #btn.pack(expand=True, anchor=SW) # SW = South-West
    97. #btn.pack(side = TOP)
    98. #btn.pack(side = BOTTOM)
    99. #btn.pack(side = LEFT)
    100. #btn.pack(side = RIGTH)
    101.  
    102.  
    103. ## Позиционирование Grid
    104. #root.geometry('250x200')
    105. #for c in range(3): root.columnconfigure(index = c, weight = 1)
    106. #for r in range(3): root.rowconfigure(index = r, weight=1)
    107. #for r in range(3):
    108. # for c in range(3):
    109. # btn = ttk.Button(text = f'[{r}, {c}]')
    110. # btn.grid(row = r, column = c)
    111.  
    112. ## Обработка событий
    113. #def click():
    114. # print('Hello world')
    115. #btn = ttk.Button(text = 'Click', command = click)
    116. #btn.pack()
    117.  
    118. ## Привязка событий
    119.  
    120. ## bind(<событие>, <функция>)
    121. ## Какие могут быть типы событий? (низкоуровневые события)
    122. ## Active - окно становится активным
    123. ## Deactive - окно становится неактивным
    124. ## MouseWheel - прокрутка колёсика мышки
    125. ## KeyPress - нажатие клавиши на клавиатуре
    126. ## KeyRelease - освобождние клавиши на клавиатуре
    127. ## ButtonPress - нажатие кнопки мыши
    128. ## ButtonRelease - освобождение кнопки мышки
    129. ## Motion - движение мыши
    130. ## Configure - изменение размера и положения виджета
    131. ## Destroy - уничтожение виджета
    132. ## FocusIn - получение фокуса
    133. ## FocusOut - потеря фокуса
    134. ## Enter - указатель мыши вошёл в пределы виджета
    135. ## Leave - указатель мыши покинул пределы виджета
    136.  
    137. #def entered(event):
    138. # btn['text'] = 'Entered'
    139. #def left(event):
    140. # btn['text'] = 'Left'
    141. #btn = ttk.Button(text = 'Click')
    142. #btn.pack(anchor = CENTER, expand = 1)
    143. #btn.bind('<Enter>', entered)
    144. #btn.bind('<Leave>', left)
    145.  
    146. ## Шаблоны событий
    147. # <модификатор-имя_события-клавиша>
    148. # Модификатор события:
    149. # Alt - нажата клавиша Alt
    150. # Control, Shift, Any и т.д.
    151.  
    152. def single_click_left(event):
    153. btn['text'] = 'Single Click Left'
    154.  
    155. def double_click_left(event):
    156. btn['text'] = 'Double Click Left'
    157.  
    158. def single_click_right(event):
    159. btn['text'] = 'Single Click Right'
    160.  
    161. def double_click_right(event):
    162. btn['text'] = 'Double Click Right'
    163.  
    164. def left(event):
    165. btn['text'] = 'Left'
    166.  
    167. def entered(event):
    168. btn['text'] = 'Entered'
    169.  
    170. btn = ttk.Button(text = 'Click')
    171. btn.pack(anchor = CENTER, expand = 1)
    172.  
    173. btn.bind('<ButtonPress-1>', single_click_left) # Левая кнопка мыши
    174. btn.bind('<Double-ButtonPress-1>', double_click_left) # ЛКМ
    175. btn.bind('<ButtonPress-3>', single_click_right) # ПКМ
    176. btn.bind('<Double-ButtonPress-3>', double_click_right) # ПКМ
    177. btn.bind('<Leave>', left)
    178. btn.bind('<Enter>', entered)
    179.  
    180. root.mainloop() # Метод для отображения окна и взаимодействия с пользователем
    181.  
  • VolinNilov
    2 years
    # text 0.64 KB | 0 0
    1. ## Глобальная регистрация событий
    2. clicks = 0
    3.  
    4. def clicked(event):
    5. global clicks
    6. clicks = clicks + 1
    7. btn['text'] = f'{clicks} Clicks'
    8.  
    9. for r in range(3):
    10. for c in range(3):
    11. btn = ttk.Button(text = f'[{r}, {c}]')
    12. btn.grid(row = r, column = c)
    13.  
    14. #btn = ttk.Button(text = 'Click me')
    15. #btn.pack(anchor = CENTER, expand = 1)
    16.  
    17. ## привязка события к кнопкам ttk.Button
    18. root.bind_class('TButton', '<Double-ButtonPress-1>', clicked)
    19.  
    20. root.mainloop() # Метод для отображения окна и взаимодействия с пользователем
  • VolinNilov
    2 years
    # text 0.05 KB | 0 0
    1. ## Удаление события
    2.  
    3. root.unbind(event)
  • VolinNilov
    2 years
    # text 0.37 KB | 0 0
    1. ## Виджет Lable
    2. #label = ttk.Label(text = 'Hello world')
    3. # Установка шрифта: font = ('имя шрифта', размер шрифта)
    4. #label = ttk.Label(text = 'Hello world', font = ('Robot', 14))
    5. #label = ttk.Label(text = 'Hello world', font = ('Arial', 14))
    6. #label = ttk.Label(text = 'Hello world', font = ('Times New Roman', 14))
    7. #label.pack()
    8.  
  • VolinNilov
    2 years
    # text 0.13 KB | 0 0
    1. ## Утсановка изображения
    2. logo = PhotoImage(file = './icon_2.png')
    3. label = ttk.Label(image = logo)
    4. label.pack()
    5.  
  • VolinNilov
    2 years
    # text 0.32 KB | 0 0
    1. ## Установка изображения и текста
    2. logo = PhotoImage(file = './icon_2.png')
    3. label = ttk.Label(image = logo, text = 'Привет мир, мы вставили лого', compound = 'bottom')
    4. label.pack()
    5.  
    6. # compound must be 'none', 'text', 'image', 'center', 'top', 'bottom', 'left' or 'right'
    7.  
  • VolinNilov
    2 years
    # text 0.28 KB | 0 0
    1. ## Стилизация
    2. #label = ttk.Label(text = 'Hello world', borderwidth = 2, relief='ridge')
    3. #label.pack()
    4. # Установка цвета фона и текста
    5. label = ttk.Label(text = 'Hello world', background = '#FFCDD2', foreground = '#B71C1C', padding = 8)
    6. label.pack()
  • VolinNilov
    2 years
    # text 0.13 KB | 0 0
    1. ## Поле ввода Entry
    2. # Простейшее текстовое поле
    3. ttk.Entry().pack(anchor=NW, padx = 22, pady = 22)
  • VolinNilov
    2 years
    # text 0.38 KB | 0 0
    1. # Получение введённого текста
    2. def show_msg():
    3. label['text'] = entry.get() # получаем введённый текст
    4.  
    5. entry = ttk.Entry()
    6. entry.pack(anchor=NW, padx = 22, pady = 22)
    7.  
    8. btn = ttk.Button(text = 'Click', command = show_msg)
    9. btn.pack(anchor=NW, padx = 35, pady = 10)
    10.  
    11. label = ttk.Label()
    12. label.pack(anchor=NW, padx = 22, pady = 10)
  • VolinNilov
    2 years
    # text 0.71 KB | 0 0
    1. ## Вставка и удаление текста
    2. def clear():
    3. entry.delete(0, END) # удаление введённого тектста
    4.  
    5. def display():
    6. label['text'] = entry.get() # получение введённого текста
    7.  
    8. entry = ttk.Entry()
    9. entry.pack(anchor=NW, padx = 22, pady = 22)
    10.  
    11. label = ttk.Label()
    12. label.pack(anchor=NW, padx = 22, pady = 10)
    13.  
    14. # вставка начальных данных
    15. entry.insert(0, 'Hello World')
    16.  
    17. display_button = ttk.Button(text = 'Display', command=display)
    18. display_button.pack(side = LEFT, anchor = N, padx = 22, pady = 22)
    19.  
    20. clear_button = ttk.Button(text = 'Clear', command=clear)
    21. clear_button.pack(side = LEFT, anchor = N, padx = 22, pady = 22)
  • VolinNilov
    2 years
    # text 0.79 KB | 0 0
    1. ## Валидация значения
    2. from tkinter import *
    3. from tkinter import ttk
    4. import re
    5. def is_validate(new_val):
    6. result = re.match('^\+\d{0,11}$', new_val) is not None
    7. if not result and len(new_val) <= 12:
    8. errmsg.set('Номер телефона должен быть в формате +xxxxxxxxxxx, где x представляет собой цифру')
    9. else:
    10. errmsg.set(' ')
    11. return result
    12.  
    13. check = (root.register(is_validate), '%P')
    14.  
    15. errmsg = StringVar() # Вывод строчки
    16.  
    17. phone_entry = ttk.Entry(validate = 'key', validatecommand=check)
    18. phone_entry.pack(padx = 5, pady = 5, anchor=NW)
    19.  
    20. error_label = ttk.Label(foreground='red', textvariable=errmsg, wraplength=250)
    21. error_label.pack(padx = 5, pady = 5, anchor = NW)
    22.  
    23. root.mainloop()
  • VolinNilov
    2 years
    # text 0.86 KB | 0 0
    1. С помощью параметра validate конструктора Entry можно задать, когда проводить валидацию введенного значения. Этот параметр может принимать следующие значения:
    2.  
    3. none: отсутствие валидации, значение по умолчанию
    4.  
    5. focus: валидация при получении фокуса
    6.  
    7. focusin: валидация при изменении фокуса
    8.  
    9. focusout: валидация при потере фокуса
    10.  
    11. key: валидация при каждом вводе нового символа
    12.  
    13. all: валидация при измении фокуса и вводе символов в поле
    14.  
    15. Параметр validatecommand позволяет установить команду валидации.
    16.  
  • VolinNilov
    2 years
    # text 0.40 KB | 0 0
    1. ## Синхронная смена значения у label и button через переменную message
    2. message = StringVar()
    3.  
    4. label = ttk.Label(textvariable=message)
    5. label.pack(anchor = NW, padx = 6, pady = 6)
    6.  
    7. entry = ttk.Entry(textvariable=message)
    8. entry.pack(anchor = NW, padx = 6, pady = 6)
    9.  
    10. button = ttk.Button(textvariable=message)
    11. button.pack(side = LEFT, anchor = N, padx = 6, pady = 6)
    12.  
  • VolinNilov
    2 years
    # text 0.41 KB | 0 0
    1. ## Изменение значения кнопки, через переменную
    2. def click_button():
    3. value = click.get() # получение значения
    4. click.set(value + 1) # устанавливаем новое значение
    5.  
    6. click = IntVar(value = 0) # значение по умолчанию
    7.  
    8. btn=ttk.Button(textvariable=click, command=click_button)
    9. btn.pack(anchor = CENTER, expand = 1)
  • VolinNilov
    2 years
    # text 0.82 KB | 0 0
    1. ## Отслеживание изменения переменной
    2. # trace_add(trace_mode, function)
    3. # trace_mode: write, read, unset
    4. # function - функция, которая будет вызываться при возникновении события из параметра trace_mode
    5.  
    6. def check(*args):
    7. print(name)
    8. if name.get() == 'admin':
    9. result.set('запрещённое имя')
    10. else:
    11. result.set('нормальное имя')
    12.  
    13. name = StringVar()
    14. result = StringVar()
    15.  
    16. name_entry = ttk.Entry(textvariable=name)
    17. name_entry.pack(padx = 5, pady = 5, anchor = NW)
    18.  
    19. check_label = ttk.Label(textvariable=result)
    20. check_label.pack(padx = 5, pady = 5, anchor = NW)
    21.  
    22. # отслеживание изменения значения переменной name
    23. name.trace_add('read', check)
  • VolinNilov
    2 years
    # text 0.27 KB | 0 0
    1. ## Checkbutton
    2. enabled = IntVar()
    3.  
    4. enabled_checkbutton = ttk.Checkbutton(text = 'Вкл', variable=enabled)
    5. enabled_checkbutton.pack(padx = 6, pady = 6, anchor = NW)
    6.  
    7. enabled_label = ttk.Label(textvariable=enabled)
    8. enabled_label.pack(padx = 6, pady = 6, anchor = NW)
  • VolinNilov
    2 years
    # text 0.48 KB | 0 0
    1. ## Обрабоботка изменения флажка
    2. from tkinter.messagebox import showinfo
    3.  
    4. def checkbutton_changed():
    5. if enabled.get() == 1:
    6. showinfo(title = "Info", message = "Включено")
    7. else:
    8. showinfo(title = "Info", message = "Отключено")
    9.  
    10. enabled = IntVar()
    11.  
    12. enabled_checkbutton = ttk.Checkbutton(text = 'Вкл', variable=enabled, command = checkbutton_changed)
    13. enabled_checkbutton.pack(padx = 6, pady = 6, anchor = NW)
    14.  
  • VolinNilov
    2 years
    Comment was deleted
  • VolinNilov
    2 years
    # Python 0.33 KB | 0 0
    1. ## onvalue и offvalue
    2. from tkinter.messagebox import showinfo
    3.  
    4. def checkbutton_changed():
    5.     showinfo(title = 'INFO', message=enabled.get())
    6.  
    7. enabled = StringVar()
    8.  
    9. enabled_checkbutton = ttk.Checkbutton(text = 'Вкл', variable=enabled, command = checkbutton_changed)
    10. enabled_checkbutton.pack(padx = 6, pady = 6, anchor = NW)
  • VolinNilov
    2 years
    # Python 0.34 KB | 0 0
    1. ## "Поиграем" с текстом флажка
    2. enabled_on = "Включено"
    3. enabled_off = "Отключено"
    4. enabled = StringVar(value = enabled_on)
    5.  
    6. enabled_checkbutton = ttk.Checkbutton(textvariable=enabled, variable=enabled, offvalue=enabled_off, onvalue=enabled_on)
    7. enabled_checkbutton.pack(padx = 6, pady = 6, anchor = NW)
  • VolinNilov
    2 years
    # Python 0.94 KB | 0 0
    1. ## Обработка нескольких флажков
    2. def select():
    3.     result = 'Выбрано: '
    4.     if python.get() == 1:
    5.         result = f'{result}  Python'
    6.     if javascript.get() == 1:
    7.         result = f'{result}  JavaScript'
    8.     if java.get() == 1:
    9.         result = f'{result}  Java'
    10.     languages.set(result)
    11.  
    12. position = {'padx': 6, 'pady': 6, 'anchor': NW}
    13.  
    14. languages = StringVar()
    15. languages_label = ttk.Label(textvariable=languages)
    16. languages_label.pack(**position)
    17.  
    18. python = IntVar()
    19. python_checkbutton = ttk.Checkbutton(text = 'Python', variable = python, command = select)
    20. python_checkbutton.pack(**position)
    21.  
    22. javascript = IntVar()
    23. javascript_checkbutton = ttk.Checkbutton(text = 'JavaScript', variable = javascript, command = select)
    24. javascript_checkbutton.pack(**position)
    25.  
    26. java = IntVar()
    27. java_checkbutton = ttk.Checkbutton(text = 'Java', variable = java, command = select)
    28. java_checkbutton.pack(**position)
    29.  
Add Comment
Please, Sign In to add comment