首页 > 解决方案 > TkInter 的 Python 错误和异常

问题描述

我正在尝试编写一个 TkInter GUI。我想创建一个只允许小于 1000 的浮点数的条目。

我正在使用tryandexcept方法,我的问题是由 try 方法测试的代码没有执行,而是针对 ValueErrors 进行测试。

有没有办法在尝试和异常之间执行代码?

谢谢

from Tkinter import *

root = Tk()

class MyOwnEntry:

    def __init__(self):
        self.variable = StringVar()
        self.variable.trace("w", self.Validation)
        self.MyOwnEntry = Entry(root, textvariable = self.variable)
        self.MyOwnEntry.pack()

    def Validation(self,*args):
        self.newvar = self.variable.get()
        try:
            if isinstance(float(self.newvar),float): 
                return self.newvar
            elif float(self.newvar)<1000:
                self.newvar = self.newvar[:-1]
                self.variable.set(self.newvar)
            else:
                self.newvar = self.newvar[:-1]
                self.variable.set(self.newvar)
        except ValueError:
            self.newvar = self.newvar[:-1]
            self.variable.set(self.newvar)




Input1 = MyOwnEntry()


root.mainloop()

标签: pythonvalidationtkinter

解决方案


我想创建一个只允许小于 1000 的浮点数的条目。

如果 ^ 是您想要的,您可能不需要第一个条件,因为它只会self.newvar在值为 float 时返回,但您还需要检查它是否小于 1000

    def Validation(self, *args):
        self.newvar = self.variable.get()
        try:
            if isinstance(self.newvar,float) and self.newvar < 1000:
                self.newvar = self.newvar[:-1]
                self.variable.set(self.newvar)
            else:
                self.newvar = self.newvar[:-1]
                self.variable.set(self.newvar)
        except ValueError:
            self.newvar = self.newvar[:-1]
            self.variable.set(self.newvar)

推荐阅读