Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708

Модальное окно tkinter + ttk.combobox

05.11.2019, 20:36. Показов 2553. Ответов 0

Студворк — интернет-сервис помощи студентам
Ребят, помогите разобраться с заменой одного поля Entry на виджет ttk combobox c выбором двух позиций. Суть проблемы - есть вот такой код модального окна добавления значений по нажатию кнопки "добавить":

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from tkinter import *
from tkinter import ttk
# Класс окна верхнего уровня "Добавить значения"
##################################################
"""
Реализует модальное окно верхнего уровня для добавления значений в таблицу базы данных, наследует класс Toplevel модуля tkinter. 
""" 
fields = 'Значение#1', 'Значение#2', 'Значение#3'   # переменные - имена
 
 
def fetch(entries):
    for entry in entries:
        print('Значение# --> {}.'.format(entry.get()))
        
def makeform(root, fields):
    entries = []
    """#######################(ПРИМЕР)
    combo = Frame(root)
    combobox = ttk.Combobox(root, values=[u'Поле#1', u'Поле#2'])
    combobox.current(0)
    combo.pack(side=TOP,fill=X)
    combobox.pack(side=LEFT, expand=YES, fill=X) 
    """########################(ПРИМЕР)
    for field in fields:
        row = Frame(root) # создать новый ряд
        lab = Label(row, width=10, text=field) # добавить метку, поле ввода
        ent = Entry(row)
 
        row.pack(side=TOP, fill=X) # прикрепить к верхнему краю
        lab.pack(side=LEFT)
        ent.pack(side=RIGHT, expand=YES, fill=X) # растянуть по горизонтали
        entries.append(ent)
    return entries
 
def show(entries, popup):
    fetch(entries) # извлечь данные перед уничтожением окна!
    popup.destroy() # если инструкции поменять местами, сценарий
    # будет возбуждать исключение
 
def ask():
    popup = Toplevel() # отобразить форму в виде модального диалога
    popup.title('Добавить значения')
    popup.geometry('350x100+600+300')
    #popup.iconbitmap('../icon_add.ico')
    ents = makeform(popup, fields)
    Button(popup, text='Добавить', command=(lambda: show(ents, popup))).pack(side=BOTTOM, fill=BOTH)
    popup.grab_set()
    popup.focus_set()
    popup.wait_window() # ждать закрытия окна
 
 
if __name__ == '__main__':
    
    Button(text='Добавить', command=ask).pack()
    mainloop()
Необходимо не нарушая общую структуру заменить позицию ввода значения#1 на виджет выбора двух значений (Поле#1 и Поле#2), скорее всего, с помощью виджета ttk combobox. А также оставить возможность вывода введенного значения в консоль.

Бонусом - мне необходимы значения списка entries для дальнейшей обработке в основном модуле, для добавления их в базу данных. Может есть варианты или способ реализации данной возможности, т.е. каким образом подготовить entries к выходу в основной модуль, где он(список) и будет добавляться в базу sqllite.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2019, 20:36
Ответы с готовыми решениями:

Tkinter - модальное окно
Имеется форма сделанная в Tkinter. Как вызвать вызвать из нее по нажатию кнопки модальное окно? К примеру MessageBox c кнопками Ok...

Виджеты tkinter и tkinter.ttk (используется Python 3.5.2)
1) Проблема с виджетом Scale (ползунок) модуля tkinter. Я создал ползунок от 1 до 50 (как на первой картинке). По умолчанию стоит на 1....

В чём преимущество ttk перед tkinter?
Вообще недавно читал про ttk, если чесно заинтересовало, но это потом.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2019, 20:36
Помогаю со студенческими работами здесь

Как сделать так, чтобы при использовании модуля из tkinter не открывалось окно tkinter?
Как сделать так, чтобы при использовании модуля из tkinter не открывалось окно tkinter? Я пишу приложение на kivy но использую ...

combobox и listbox в tkinter
Здравствуйте! Есть ли в combobox tkinter и listbox tkinter свойство itemdata и как использовать? Например есть item1, item2, item3 и их...

Закрыть дочернее окно в tkinter
Скажите пожалуйста как закрыть дочернее окно в tkinter? Конечно можно использовать статичный класс или глобальную перемену но это всё...

Парсер с выводом в окно tkinter
Пытаюсь написать парсер с выводом в окно tkinter, но в консоль выводит нормально такую строку: "ACID3 обновился: IE9+ 100/100, Firefox...

Событие вызывается в tkinter при нажатии на Combobox
Скажите пожалуйста какое событие вызывается в tkinter при нажатии на Combobox? Мне необходимо, чтобы когда раскрывался выпадающий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru