99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708

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

05.11.2019, 20:36. Показов 2577. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru