Как заблокировать ввод в Entry при сохранении его функциональности? - PullRequest
0 голосов
/ 20 декабря 2018

Я делаю калькулятор, используя Tkinter.Я хочу иметь возможность запретить пользователю вводить текст непосредственно в записи, но, тем не менее, я не хочу просто полностью деактивировать запись, потому что мне нужны мои команды ввода с кнопок для ее работы.

from Tkinter import *
root = Tk()
root.title("Calculadora")
root.resizable(height = False, width = False)

#functions------------------------------------------------------------------

display_input = StringVar()

number_storage = ""

def button_click(buttons):
    global number_storage
    number_storage = number_storage + str(buttons)
    display_input.set(number_storage)


#row 1---------------------------------------------------------------------------

display = Entry(root, textvariable = display_input, justify = 'right', font = ("Simplified Arabian Fixed", 18), bg = "black", fg = "white", bd = 25).grid(columnspan = 4)

Button7 = Button(root, command = lambda: button_click(7), bd = 10, text= "7", padx = 9, font = ("Simplified Arabian Fixed", 15), bg = "black", fg = "white").grid(column = 0, row = 1, sticky = 'ew')

Button8 = Button(root, command = lambda: button_click(8), bd = 10, text = "8", padx = 9, font = ("Simplified Arabian Fixed", 15), bg = "black", fg = "white").grid(column = 1, row = 1, sticky = 'ew')

Button9 =  Button(root, command = lambda: button_click(9), bd = 10, text = "9", padx = 9, font = ("Simplified Arabian Fixed", 15), bg = "black", fg = "white").grid(column = 2, row = 1, sticky = 'ew')

Division = Button(root, command = lambda: button_click("/"), bd = 10, text = "/", padx = 9, font = ("Simplified Arabian Fixed", 15), bg = "grey30", fg = "white").grid(column = 3, row = 1, sticky = 'ew')

root.mainloop()

1 Ответ

0 голосов
/ 20 декабря 2018

Пропуск state="readonly" при построении Entry;он по-прежнему позволяет выделять текст, а изменение display_input программно по-прежнему меняет отображение, но не допускает непосредственного ввода пользователем.

За документы :

состояние =

Состояние ввода: НОРМАЛЬНЫЙ , ОТКЛЮЧЕН * или «только для чтения» (аналогично ОТКЛЮЧЕНО , но содержимое все еще можно выбрать и скопировать).По умолчанию NORMAL .Обратите внимание, что если вы установите для этого параметра значение ОТКЛЮЧЕНО или «только для чтения», вызовы insert и delete игнорируются.(штат / штат)

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