如何在Python中将特定文本设置为条目?

如何在Python中将特定文本设置为条目?,python,tkinter,tkinter-entry,Python,Tkinter,Tkinter Entry,我正在准备一个python/tkinter标签小部件来更新它的内容。根据今天早些时候的一篇文章,我遵循了关于如何组合小部件的说明。但是,在运行时,当我单击按钮Calculeaza时,标签小部件不会更改内容。据我所知,Calculeaza()函数是错误的 def Calculeaza(self): cgrade =celsiusEntry.get() if cgrade == ' ': fahrenheitEntry.configure(text = ' ')

我正在准备一个python/tkinter标签小部件来更新它的内容。根据今天早些时候的一篇文章,我遵循了关于如何组合小部件的说明。但是,在运行时,当我单击按钮Calculeaza时,标签小部件不会更改内容。据我所知,Calculeaza()函数是错误的

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)