【问题标题】:How to check empty entry for Invar()如何检查 Invar() 的空条目
【发布时间】:2020-02-12 16:46:22
【问题描述】:

我想将值存储在 Intvar 变量中,当我点击提交时,如果 entry_var_get 值为空,则显示值为空的错误,请帮助我解决这个问题

import tkinter as tk
from tkinter import messagebox as m_box



win = tk.Tk()

entry_var=tk.IntVar()
entry = tk.Entry(win , text='Enter the number', textvariable= entry_var)
entry.grid(row=0, column=0)
entry_var_get = entry_var.get()

def submit():
    if entry_var_get==None:
        m_box.showerror('error','empty value')

submit_btn = tk.Button(win , text='submit' , command=submit)
submit_btn.grid(row=1, column=0)


win.mainloop()

【问题讨论】:

    标签: python-3.x tkinter tk


    【解决方案1】:

    尝试在调用函数 submit 而不是在第一次绘制屏幕时获取值,这对我有用。

    此外,如果用户从框中删除该值并点击submit,则您将变量视为int,这会中断。更安全的方法是使用StringVar 并验证输入是否符合预期,然后将其转换为类型int。作为一般经验法则,所有用户输入都应经过验证,因为它被认为是危险的。

    例子:

    import tkinter as tk
    from tkinter import messagebox as m_box
    
    win = tk.Tk()
    
    entry_var = tk.StringVar()
    entry = tk.Entry(win, text='Enter the number', textvariable=entry_var)
    entry.grid(row=0, column=0)
    
    
    def submit():
        entry_var_get = entry_var.get()
        if entry_var_get.isdigit():
            entry_var_get = int(entry_var_get)
        if not entry_var_get or entry_var_get == 0:
            m_box.showerror('error', 'empty value')
        else:
            m_box.showinfo('success', f'value entered: {entry_var_get}')
    
    
    submit_btn = tk.Button(win, text='submit', command=submit)
    submit_btn.grid(row=1, column=0)
    
    win.mainloop()
    

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      相关资源
      最近更新 更多