Python 通过单独的功能自动填充Tkinter.输入框

Python 通过单独的功能自动填充Tkinter.输入框,python,tkinter,self,tkinter-canvas,Python,Tkinter,Self,Tkinter Canvas,我有一个Tk应用程序,它有几个数字输入框: self.entry = Tkinter.Entry(self, textvariable = self.c2_low).grid(column=0,row=2, sticky ='W') self.entry = Tkinter.Entry(self, textvariable = self.c2_high).grid(column=1,row=2,sticky='W') self.entry = Tk

我有一个Tk应用程序,它有几个数字输入框:

        self.entry = Tkinter.Entry(self, textvariable = self.c2_low).grid(column=0,row=2, sticky ='W')
        self.entry = Tkinter.Entry(self, textvariable = self.c2_high).grid(column=1,row=2,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.c3_low).grid(column=0,row=3,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.c3_high).grid(column=1,row=3,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.ic4_low).grid(column=0,row=4,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.ic4_high).grid(column=1,row=4,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.nc4_low).grid(column=0,row=5,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.nc4_high).grid(column=1,row=5,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.ic5_low).grid(column=0,row=6,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.ic5_high).grid(column=1,row=6,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.nc5_low).grid(column=0,row=7,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.nc5_high).grid(column=1,row=7,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.n2_low).grid(column=0,row=9,sticky='W')
        self.entry = Tkinter.Entry(self, textvariable = self.n2_high).grid(column=1,row=9,sticky='W')
这是完全工作,我可以使用其他功能的数字输入。但是,我需要一个单独的函数,当单击“使用通用数字填充”按钮时,用该函数指定的通用数字填充这些输入框。这可能吗


编辑:我有一个按钮,用于对上述数字进行一般模拟,但我希望输入框显示我指定的数字

条目小部件的内容直接链接到其控制变量,因此在相应的StringVar上调用.set()方法将设置条目的内容

self.c2_low.set("c2_low")
self.c2_high.set(23)   #gets converted to a str automatically
然后对同一变量使用.get()方法返回内容:

try:
    x = int( self.c2_low.get() )
except ValueError:
    NotImplemented   #handle invalid input
另外,您正在对新创建的条目调用.grid()方法,这会在以后丢失对它们的引用,因为.grid()不返回任何值,使用简单类将textvariable与Entry小部件组合在一起可能会更容易:

class Smart_entry(Tkinter.Entry):
    def __init__(self,master,column,row,content="",name=None):
        self.textvar = Tkinter.StringVar(master,content,name)
        Tkinter.Entry.__init__(self,master,textvariable=self.textvar)
        self.grid(column=column, row=row, sticky="W")

    def get(self):
        return self.textvar.get()

    def set(self,value):
        return self.textvar.set(value)
 # if all the entries are int/float 
 # then handling the conversion in the .get() may be useful
##    def get(self,conv=str):
##        "returns content after converting to specified type, returns None if conversion failed"
##        try:
##            return conv( self.textvar.get() )
##        except ValueError:
##            return None

你做过什么调查吗?很多教程和tkinter文档都涵盖了您的问题。您只需调用变量的
set
方法,以获得所需的任何值。当您不知道技术名称(例如set)时,很难研究和指定所需的值。但这起作用了,谢谢。以后我会更严格地查看文档。您不需要知道技术名称,只需要阅读正在实例化的类的文档。另外,FWIW,您可以在这里省略使用
self.entry=
。您所做的只是一遍又一遍地将其设置为
None
。否则我将如何获得分配给每个条目的StringVar?