如何在Python中将特定文本设置为条目?
我正在准备一个python/tkinter标签小部件来更新它的内容。根据今天早些时候的一篇文章,我遵循了关于如何组合小部件的说明。但是,在运行时,当我单击按钮Calculeaza时,标签小部件不会更改内容。据我所知,Calculeaza()函数是错误的如何在Python中将特定文本设置为条目?,python,tkinter,tkinter-entry,Python,Tkinter,Tkinter Entry,我正在准备一个python/tkinter标签小部件来更新它的内容。根据今天早些时候的一篇文章,我遵循了关于如何组合小部件的说明。但是,在运行时,当我单击按钮Calculeaza时,标签小部件不会更改内容。据我所知,Calculeaza()函数是错误的 def Calculeaza(self): cgrade =celsiusEntry.get() if cgrade == ' ': fahrenheitEntry.configure(text = ' ')
def Calculeaza(self):
cgrade =celsiusEntry.get()
if cgrade == ' ':
fahrenheitEntry.configure(text = ' ')
else:
cgrade=float(cgrade)
fgrade=(cgrade-32)/1.8
fahrenheitEntry.configure(text=str(fgrade))# is not function
代码如下:
import sys
from Tkinter import *
class C2F(Frame):
#celsiusEntry = Entry
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Convertor Celsius/Fahrenheit")
self.pack(fill=BOTH, expand=1)
# Meniul superior cu File>Exit si Help>About
menuBar= Menu(self.parent)
self.parent.config(menu=menuBar)
fileMenu= Menu(menuBar)
fileMenu.add_command(label="Exit", command = self.onExit)
menuBar.add_cascade(label="File", menu=fileMenu)
# Adaugare butoane http://effbot.org/tkinterbook/grid.htm
"""
Label(self.parent, text="First").grid(row=0, column =0)
Label(self.parent, text="First").grid(row=1, column = 0)
"""
labelframe = LabelFrame(self.parent, text="Celsius/Fahrenheit")
labelframe.pack(fill="both", expand="yes")
left = Label(labelframe, text="Celsius")
left.grid(row=0, column=0)
Label(labelframe, text="Fahrenheit").grid(row=1, column =0)
global celsiusEntry
celsiusEntry=Entry(labelframe, bd=5)
celsiusEntry.grid(row=0, column=1)
global fahrenheitEntry
fahrenheitEntry=Entry(labelframe, bd=5, text="salut")
fahrenheitEntry.grid(row=1, column=1)
calcButon = Button(labelframe, text="Calculeaza", command=self.Calculeaza)
calcButon.grid(row=1, column=2)
def onExit(self):
self.parent.quit()
def Calculeaza(self):
cgrade =celsiusEntry.get()
if cgrade == ' ':
fahrenheitEntry.configure(text = ' ')
else:
cgrade=float(cgrade)
fgrade=(cgrade-32)/1.8
fahrenheitEntry.config(text=str(fgrade))# is not function
def main():
root= Tk()
root.geometry("350x350+300+300")
app= C2F(root)
#Label(root, text="First").grid(row=0, column =0)
root.mainloop()
if __name__ == "__main__":
main()
更正:
1-不需要创建全局变量。只需使用self创建对它的引用。
2-要操作Entry小部件中的数据,您需要首先创建一个变量(StringVar或IntVar或DoubleVar,它们是python变量的tkinter等价物)。设置变量后,您需要将其排序为“映射”到条目小部件。这样做将使您能够以编程方式获取或设置条目小部件内容
干杯:)条目小部件没有设置
方法。如果您正在阅读的文档中有这样的说明,您可能希望联系作者,告诉他们这些说明是正确的
对于条目小部件,您有两个选择。第一,如果你有一个textvariable
关联,你可以在textvariable上调用set
。这将导致更新与textvariable
关联的任何小部件。其次,如果没有textvariable
,您可以使用insert
和delete
方法替换小部件中的内容
下面是后者的一个例子:
fahrenheitEntry.delete(0, "end")
fahrenheitEntry.insert(0, cgrade)
“需要”有点太强烈了。使用变量不是解决问题的唯一方法。@BryanOakley哦,好的,谢谢。不过,我对python也是新手。谢谢。:)
fahrenheitEntry.delete(0, "end")
fahrenheitEntry.insert(0, cgrade)