@adaskl

Как вернуть кнопки при после нажатия кнопки «Очистить»?

Здравствуйте, на форме распологаются кнопки: 3, -7, 304, 3691, дублировать, закрыть и очистить, а также поле ввода и метка под полем ввода.
Нажатие на кнопки с цифрами приводят к появлению в поле ввода в начале строки, "дублирование" дублирует значение на метку, а кнопка очистить должно очищать поле ввода и метку, при достижении в поле строкой длины 25 символов кнопки должно исчезать и появляться после нажатия кнопки "Очистить".
Как можно реализовать возращение систему в исходное состание после нажатия "Очистить"? Пока что у меня исчезают кнопки с цифрами при 25 символах, но не появляются обратно при нажатии кнопки "Очистить"

from tkinter import *
import time

root = Tk()
root.geometry('600x300')

max_len = 25
var = StringVar()

def clear1():
    entry.delete("0","end")
    metka['text']=''

    
def close():
    root.destroy()

def metka1():
    pole= entry.get()
    metka.config(text = ''+pole)
 
def add_num(text):
    entry.insert(0,text)
    
def limitsize(*args):
    s = var.get()
    if len(s) > max_len:
        
        metka_hide.place(x = 190, y =41)
    if len(s)< max_len:
        metka_hide.place_forget()


var.trace_variable("w", limitsize)


entry = Entry(root, width = 45,textvariable=var)
entry.pack()


metka = Label()
metka.pack()

metka_hide = Label( bg = 'red', width = 30,height = 7)
metka_hide.pack()

б3 =Button(metka_hide,text='3',width=25,command = lambda:add_num("3"))
б3.pack()

б7 =Button(metka_hide,text='-7',width=25,command = lambda:add_num("-7"))
б7.pack()

б304 =Button(metka_hide,text='304',width=25,command = lambda:add_num("304"))
б304.pack()

б3691 =Button(metka_hide,text='3691',width=25,command = lambda:add_num("3691"))
б3691.pack()

бcopy =Button( text='Дублировать',width=25,command = metka1)
бcopy.pack()

бclose =Button(root,text='Закрыть',width=25,command = close)
бclose.pack()

бclear =Button(root,text='Очистить',width=25,command=clear1)
бclear.pack()

root.mainloop()
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
@AlbertForest
Ваше объяснение не совсем понятное но я попробую.
Для начала нужно:
- ̶П̶е̶р̶е̶с̶т̶а̶т̶ь̶ ̶и̶с̶п̶о̶л̶ь̶з̶о̶в̶а̶т̶ь̶ ̶к̶и̶р̶и̶л̶л̶и̶ц̶у̶ ̶в̶ ̶и̶м̶е̶н̶а̶х̶ ̶п̶е̶р̶е̶м̶е̶н̶н̶ы̶х̶
- Выяснить что означают символы "<" и ">" и больше их не путать
- Хотя бы бегло пролистать документацию и выяснить, что place_forget() работает только для виджетов, установленных с помощью place()

Не буду особо вникать, так как с tkinter работать не приходилось. Но если вопрос только в скрытии/отображении, то вот пример:

from tkinter import *
import time

root = Tk()
root.geometry('600x300')

max_len = 25
var = StringVar()

def clear1():
    entry.delete("0","end")
    metka['text'] = ''

    
def close():
    root.destroy()

def metka1():
    pole= entry.get()
    metka.config(text = '' + pole)
 
def add_num(text):
    entry.insert(0,text)
    
def limitsize(*args):
    s = var.get()
    
    if len(s) > max_len:
        metka_hide.place_forget()
    else:
        metka_hide.place(x = 204, y = 120)


var.trace_variable("w", limitsize)


entry = Entry(root, width = 45, textvariable=var)
entry.pack()


metka = Label()
metka.pack()

metka_hide = Label( bg = 'red', width = 30,height = 7)
metka_hide.pack()

b3 = Button(metka_hide,text='3',width=25,command = lambda:add_num("3"))
b3.pack()

b7 = Button(metka_hide,text='-7',width=25,command = lambda:add_num("-7"))
b7.pack()

b304 = Button(metka_hide,text='304',width=25,command = lambda:add_num("304"))
b304.pack()

b3691 = Button(metka_hide,text='3691',width=25,command = lambda:add_num("3691"))
b3691.pack()

metka_hide.place(x = 204, y = 120)

bcopy = Button( text='Дублировать',width=25,command = metka1)
bcopy.pack()

bclose = Button(root,text='Закрыть',width=25,command = close)
bclose.pack()

bclear = Button(root,text='Очистить',width=25,command=clear1)
bclear.pack()

root.mainloop()


Надеюсь смысл изменений в вашем коде понятен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы