繁体   English   中英

当我在课堂上按下 Python Tkinter 中的按钮时如何删除条目

[英]How to delete an entry when I press a Button in Python Tkinter in a class

我是初学者。 我可以请你帮忙吗?

如何清除 Python tkinter 中的条目。 我无法清除它。 我尝试了诸如 END 和 'END' 之类的参数,但是当我按下按钮时我无法清除条目

能不能尽快答复谢谢。 我现在在一个项目中工作

这是我的代码:

from tkinter import *
class TkinScreen:
    def main_screen_opening(self):
        self.screen = Tk()
        self.screen.geometry ('500x500')
        self.screen.title ('Rwooggle Account')
        my_heading1 = Label (text = 'Rwooggle.com', bg = 'blue', fg = 'yellow', font = ('Courier', 34, 'italic'), width = '500').pack()
        my_heading = Label (text = 'Login', bg = 'blue', fg = 'black', font = ('Courier', 24, 'bold'), width = '500').pack()

    def variables(self):
        self.username_var = StringVar()
        self.password_var = StringVar()
        self.age_var = IntVar()
        self.city_var = StringVar()

    def labels_entries(self):
        self.username_text = Label (text = 'Username*', font = ('Courier', 18)).pack()
        self.username_entry = Entry (textvariable = self.username_var, width = '30').pack()
        Label (text = "", width = '30').pack()
        
        self.password_text = Label (text = 'Password*', font = ('Courier', 18)).pack()
        self.password_entry = Entry (textvariable = self.password_var, width = '30').pack()
        Label (text = "", width = '30').pack()
        
        self.age_text = Label (text = 'Age', font = ('Courier', 18)).pack()
        self.age_entry = Entry (textvariable = self.age_var, width = '30').pack()
        Label (text = "", width = '30').pack()

        self.city_text = Label (text = 'Country', font = ('Courier', 18)).pack()
        self.city_entry = Entry (textvariable = self.city_var, width = '30').pack()
        Label (text = "", width = '30').pack()

    def button(self):
        log_in_but = Button (text = 'Log In', font = ('Courier', 20), command = self.button_command).pack()

    def button_command(self):
        print ('User Sucessfully Logged In')
        self.user_info = self.username_var.get()
        self.pass_info = self.password_var.get()
        self.pass_print = '*' * (len(self.pass_info))
        self.age_info = self.age_var.get()
        self.city_info = self.city_var.get().capitalize()

        txt_info = f"""\
    Username    :   {self.user_info}
    Password    :   {self.pass_print}
    Age         :   {self.age_info}
    Country     :   {self.city_info}
        """
        print (txt_info)

        self.username_entry.delete(0, 'end')
        self.password_entry.delete(0, 'end')
        self.age_entry.delete(0, 'end')
        self.city_entry.delete(0, 'end')
        

    def function(self):
        self.screen.mainloop()

tkint = TkinScreen ()
tkint.main_screen_opening()
tkint.variables()
tkint.labels_entries()
tkint.button()
tkint.function()

这是错误用户成功登录用户名:FFNNFD 密码:****** 年龄:12 国家:Eggreg

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Roger Geronimo\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "C:\Users\Roger Geronimo\Documents\Programming\SublimeText3\baf.py", line 53, in button_command
    self.username_entry.delete(0, 'end')
AttributeError: 'NoneType' object has no attribute 'delete'

我也试过 END 参数

先感谢您

无论您想清除什么条目,请在单击按钮时调用的函数中使用entry.set('')

只是改变

self.username_entry = Entry (textvariable = self.username_var, width = '30').pack()

self.username_entry = Entry (textvariable = self.username_var, width = '30')
self.username_entry.pack()

我建议对所有输入框执行此操作,然后像往常一样继续操作,它将解决错误:D

解释:

这是因为self.username_entry = Entry (....).pack()返回None ,即,当您使用self.username_entry.delete(0,'end')您说的是Entry (....).pack().delete(0,'end')就不存在,因为self.username_entry = Entry (....).pack()是 None 他们给出错误,你收到了。

额外提示:

  • 我建议在您的小部件上使用master参数,例如Entry(root)或者当您使用更多窗口时,它会造成严重破坏。
  • 您可以使用带有 tkinter 的messagebox类的东西,而不是说print ('User Sucessfully Logged In') 这是如何

如果您有任何疑问或错误,请告诉我

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM