Я думаю, что вы пытаетесь найти Combobox.Это виджет присутствует в tkinter.ttk
.Поле со списком предоставляет список значений, которые можно выбрать, или требуемый пользователем текст в записи.Я отредактировал ваш код, чтобы заменить запись комбинированным списком, который имеет 3 варианта: username1, username2 и другие.
uname = StringVar()
username = Combobox(root, textvariable = uname, values = ["username1", "username2", "other"])
username.bind("<<ComboboxSelected>>", usernameSelect)
username.pack(side = LEFT)
Эта функция вызывается всякий раз, когда выбирается новое значение из списка, и включает режим редактирования, если выбрано значение «прочее» (state='normal'
означает режим редактирования)
def usernameSelect(event):
if uname.get() not in ["username1", "username2"]:
username.config(state = 'normal')
uname.set('')
else:
username.config(state = 'readonly')
Теперь просто используйте метод uname.get()
, чтобы получить значение в Combobox
.Вот полный код
from tkinter import *
from tkinter.ttk import Combobox
def usernameSelect(event):
if uname.get() not in ["username1", "username2"]:
username.config(state = 'normal')
uname.set('')
else:
username.config(state = 'readonly')
root= Tk()
root.title("OCR PPP Program that EVALUATES a student's details")
usernameFrame = Frame(root)
usernameFrame.pack(side = TOP)
large_font = ("Calibri,40")
unLab = Label(usernameFrame,text="Enter username: ",fg="light green",bg="green",font = "Calibri 26 italic",bd=1, relief="solid")
unLab.pack(side = LEFT)
uname = StringVar()
username = Combobox(root, textvariable = uname, values = ["username1", "username2", "other"] )
username.bind("<<ComboboxSelected>>", usernameSelect)
username.pack(side = LEFT)
root.mainloop()