擅长:python、mysql、java
<p>无法获得预期结果,因为在<code>initialize()</code>内运行<code>a.set(round(self.entry, 2))</code>时,<code>self.entry.get()</code>的值始终为<code>0</code>(创建后的默认值)</p>
<p>您更需要将<a href="http://effbot.org/zone/tkinter-callbacks.htm" rel="nofollow">callback</a>附加到按钮小部件,按下按钮后,将在其上执行您正在查找的行为:</p>
<pre><code>import Tkinter as Tk
root = Tk.Tk()
class InterfaceApp():
def __init__(self,parent):
self.parent = parent
root.title("P")
self.initialize()
def initialize(self):
frPic = Tk.Frame(bg='', colormap='new')
frPic.grid(row=0, column=0)
self.a = Tk.DoubleVar()
self.entry = Tk.Entry(frPic, textvariable=self.a)
self.entry.insert(Tk.INSERT,0)
self.entry.grid(row=0, column=0)
# Add a button widget with a callback
self.button = Tk.Button(frPic, text='Press', command=self.round_n_decimal)
self.button.grid(row=1, column=0)
# Callback
def round_n_decimal(self):
self.a.set(round(float(self.entry.get()), 2))
if __name__ == '__main__':
app = InterfaceApp(root)
root.mainloop()
</code></pre>