Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 绑定到条目的StringVar不';t更新输入值_Python_Python 3.x_Tkinter - Fatal编程技术网

Python 绑定到条目的StringVar不';t更新输入值

Python 绑定到条目的StringVar不';t更新输入值,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我从Python和Tkinter中的GUI开始,希望创建一个小窗口,从文件中加载一个图像,显示文件的路径以及反图像。到目前为止,我已经有了选择图像的窗口和按钮(tkinter.filedialog.askopenfilename),但我正在尝试使用tkinter.StringVar更新应该显示路径的条目。StringVar的值正在更改,但条目中显示的值没有更改 帧代码: import tkinter as tk import tkinter.filedialog as tkf class Im

我从Python和Tkinter中的GUI开始,希望创建一个小窗口,从文件中加载一个图像,显示文件的路径以及反图像。到目前为止,我已经有了选择图像的窗口和按钮(tkinter.filedialog.askopenfilename),但我正在尝试使用tkinter.StringVar更新应该显示路径的条目。StringVar的值正在更改,但条目中显示的值没有更改

帧代码:

import tkinter as tk
import tkinter.filedialog as tkf

class ImageViewer(tk.Frame):

    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.master.title("Image Viewer")
        self.drawButtons()
        self.grid()

    def drawButtons(self):
        self.lblfilename = tk.Label(self, text="Image: ")
        self.lblfilename.grid(padx=1, column=0, row=0, sticky=tk.N+tk.E+tk.S+tk.W)
        self.eText = tk.StringVar()
        self.eText.set("")
        self.filenametext = tk.Entry(self, background='#fff', width=65, textvariable=self.eText)
        self.filenametext.grid(padx=10, column=1, row=0, columnspan=2, sticky=tk.N+tk.E+tk.S+tk.W)
        self.pickerbut = tk.Button(self, text="Load", command=self.picker)
        self.pickerbut.grid(column=3, row=0, sticky=tk.N + tk.S + tk.W)
        self.image = tk.Canvas(self, height=480, width=640)
        self.image.grid(padx=10, pady=5, column=0, row=1, columnspan=4, rowspan=3)
        self.cancelbut = tk.Button(self, text="Exit", command=self.cancel)
        self.cancelbut.grid(column=3, row=4, sticky=tk.N + tk.W + tk.S)

    def picker(self):
        self.imgpicker = tkf.askopenfilename(parent=self)
        self.eText.set(self.imgpicker)
        print(self.eText.get())

    def cancel(self):
        self.master.destroy()
main:

if __name__ == "__main__":
    imageviewerbutton = tk.Tk()
    imageviewerbutton.geometry('660x550+100+90')
    ImageViewer(imageviewerbutton)
    imageviewerbutton.mainloop()
当我使用self.eText.get()打印self.eText的值时,它会显示正确的图像路径,但我的条目仍然为空

在我看来,绑定StringVar和条目时会出现任何问题,尽管我已经在互联网上搜索并尝试了我想到的一切,但我没有找到解决方案


有人能给我一个提示吗?

我没有一个python3实例可以测试这个,但它在Python2.7上似乎工作正常

您是否知道不需要将
StringVar
与条目小部件一起使用?在我看来,你几乎从来都不需要。您可以获取并设置条目的值,而不使用它

例如:

self.imgpicker = tkf.askopenfilename(parent=self)
self.filenametext.delete(0, "end")
self.filenametext.insert(0, self.imgpicker)

伟大的谢谢布莱恩,这就解决了。我不知道我可以这样做。如果我想使它成为只读的,我应该在修改它之前将状态更改为正常,然后再返回到只读,还是有更好的选择?我注意到,如果不将其更改为“正常”,我将无法修改文本。@RubenBermudez:是的,更改它,然后再将其更改回去。