Я пытаюсь очиститься Entry
виджет после пользователя нажимает использование кнопки Tkinter.
Я пытался использовать ent.delete(0, END)
, но я получил ошибку при высказывании, что строки не имеют атрибута, удаляют.
Вот мой код, где я надеваю ошибку real.delete(0, END)
:
secret = randrange(1,100)
print(secret)
def res(real, secret):
if secret==eval(real):
showinfo(message='that is right!')
real.delete(0, END)
def guess():
ge = Tk()
ge.title('guessing game')
Label(ge, text="what is your guess:").pack(side=TOP)
ent = Entry(ge)
ent.pack(side=TOP)
btn=Button(ge, text="Enter", command=lambda: res(ent.get(),secret))
btn.pack(side=LEFT)
ge.mainloop()
После того, как я немного покопался в Введение в Tkinter , я придумал приведенный ниже код, который ничего не делает, кроме отображения текста. и очистите его при нажатии кнопки «Очистить текст»
:
import tkinter as tk
class App(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master, height=42, width=42)
self.entry = tk.Entry(self)
self.entry.focus()
self.entry.pack()
self.clear_button = tk.Button(self, text="Clear text", command=self.clear_text)
self.clear_button.pack()
def clear_text(self):
self.entry.delete(0, 'end')
def main():
root = tk.Tk()
App(root).pack(expand=True, fill='both')
root.mainloop()
if __name__ == "__main__":
main()
Ваша база данных, скорее всего, переживет любое приложение, которое вы создадите сегодня. Вся производительность и масштабируемость будут определяться схемой базы данных. Разумная модель базы данных - это основа, на которой строится любое приложение, и я бы сказал, что именно здесь вы должны инвестировать больше всего усилий в проектирование и тестирование, поскольку это даст самые большие преимущества.
При этом, конечно, ваше приложение предпочтет манипулировать доменными сущностями, а манипулирование неестественными сущностями, движимыми реляционной теорией, в отличие от бизнес-сущностей, просто усложнит ситуацию. Я считаю, что это роль ORM, чтобы соответствовать двум, как можно лучше. Но всякий раз, когда возникают неизбежные конфликты, право выбора пути должно быть дано движущим фактором вашей производительности и масштабируемости: схемой базы данных.
-121--3677597-Функция, вызывающая крючок pre_post_update, появляется в строке 1525 wp-includes/posts.php для меня:
do_action( 'pre_post_update', $post_ID );
Как вы видите, она передает идентификатор обновляемой публикации при ее выполнении. Чтобы получить публикацию оттуда, вы бы просто вызвать get _ post ()
, например:
function do_something_with_a_post($post_id, $post_data) {
// now do something with $post_data
}
add_action('pre_post_update', 'do_something_with_a_post', 10, 2);
Переменная $ post
выше должна ссылаться на объект со всеми различными атрибутами о публикации, которую вы ищете, надеюсь.
Мне неясно ваш вопрос. Начиная с http://effbot.org/tkinterbook/entry.htm#patterns , кажется, вам просто нужно выполнить задание после того, как вы вызвали удаление. Чтобы добавить текст записи в виджет, используйте метод вставки. Чтобы заменить текущий текст, можно вызвать метод delete перед вставкой нового текста.
e = Entry(master)
e.pack()
e.delete(0, END)
e.insert(0, "")
Не могли бы вы опубликовать еще немного кода?
ent.delete(0, END)
- правильный ответ, если предположить, что ent
является правильной ссылкой на виджет записи. Если вы получаете ошибку, о которой вы говорите, значит, в вашем коде есть ошибка. Вам нужно будет показать нам код, если вы сами не можете обнаружить ошибку.
real
получает значение ent.get ()
, которое является просто строкой. Он не знает, откуда он взялся, и не имеет возможности повлиять на виджет.
Вместо real.delete ()
вызовите .delete ()
в самом виджете входа:
def res(ent, real, secret):
if secret == eval(real):
showinfo(message='that is right!')
ent.delete(0, END)
def guess():
...
btn = Button(ge, text="Enter", command=lambda: res(ent, ent.get(), secret))