Как использовать Ttk Combobox с вводом с клавиатуры, используя клавишу возврата в качестве события - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь узнать, как использовать поле ttk Combo, и дошел до того, как настроить его, заполнить, заставить его реагировать на выбор элемента в списке с помощью элемента управления кнопки и альтернативно связываться с событием ComboboxSelected. Последний работает для закодированных перечисленных элементов, но я что-то упускаю, чтобы он работал для записи, введенной в поле со списком. Я могу ввести элемент, и он ответит, если я нажму кнопку, но ввод элемента и нажатие клавиши ввода не работает. Я пытаюсь сделать поле со списком полностью функциональным без кнопки.

import tkinter as tk
from tkinter import ttk

window = tk.Tk()
window.minsize(600, 400)
window.title("ttk Combo box")


def chooseNumbers():
    label.configure(text = "You Selected " + mynumber.get())

def callbackfn(event):
    label.configure(text = "You Have Selected " + mynumber.get())

label = ttk.Label(window, text = "Choose A Number")

label.grid(column = 0, row = 0)

mynumber = tk.StringVar()
combobox = ttk.Combobox(window, width = 15 , textvariable = mynumber,state='normal')
combobox['values'] = (5,6,7,8,9,10,12,14,15)
combobox.grid(column = 0, row = 1)

button = ttk.Button(window, text = "Click Me", command = chooseNumbers)  # don't want this
button.grid(column = 1, row = 1)

combobox.bind("<<ComboboxSelected>>",callbackfn)    # how to get this to work with keyboard entry?

window.mainloop()

1 Ответ

1 голос
/ 15 марта 2020

Это то, что вы хотите?

import tkinter as tk
from tkinter import ttk

window = tk.Tk()
window.minsize(600, 400)
window.title("ttk Combo box")


def chooseNumbers(event):
    label.configure(text = "You Selected " + mynumber.get())

def callbackfn(event):
    label.configure(text = "You Have Selected " + mynumber.get())

label = ttk.Label(window, text = "Choose A Number")

label.grid(column = 0, row = 0)

mynumber = tk.StringVar()
combobox = ttk.Combobox(window, width = 15 , textvariable = mynumber,state='normal')
combobox['values'] = (5,6,7,8,9,10,12,14,15)
combobox.grid(column = 0, row = 1)

combobox.bind("<<ComboboxSelected>>",callbackfn)    # how to get this to work with keyboard entry?
combobox.bind("<Return>",chooseNumbers)

window.mainloop()

Когда вы нажмете кнопку Enter, появится сообщение «Вы выбрали x». Просто свяжите событие <Return> и вызовите функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...