Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 如何在Tkinter中编写类似HTML的文件名字段?_Python_Tkinter_Ttk_Getopenfilename - Fatal编程技术网

Python 如何在Tkinter中编写类似HTML的文件名字段?

Python 如何在Tkinter中编写类似HTML的文件名字段?,python,tkinter,ttk,getopenfilename,Python,Tkinter,Ttk,Getopenfilename,我正在制作一个自动生成的Tkinter GUI(类似于HTML表单),并尝试制作一个HTML使用的文件名字段。 这是我的密码: e = ttk.Entry(master) e.grid(row=ROW, column=1) b = ttk.Button(master, text="...") b.grid(row=ROW, column=2, sticky=tkinter.E) 我希望这样,当用户单击…按钮时,会弹出一个文件名对话框(我知道如何执行该部分),当用户选择一个文件时,它会反映在条目

我正在制作一个自动生成的Tkinter GUI(类似于HTML表单),并尝试制作一个HTML使用的文件名字段。 这是我的密码:

e = ttk.Entry(master)
e.grid(row=ROW, column=1)
b = ttk.Button(master, text="...")
b.grid(row=ROW, column=2, sticky=tkinter.E)
我希望这样,当用户单击
按钮时,会弹出一个文件名对话框(我知道如何执行该部分),当用户选择一个文件时,它会反映在条目中(这是我遇到问题的部分)。
我在这方面遇到问题的原因是E和B不断变化,因为这是在一个循环中运行的,所以我认为唯一可行的方法是使用行检测器,并以某种方式更改输入框的值。我该怎么做


提前谢谢!如果有任何不清楚的地方,请告诉我。

最好的解决方案之一是创建自己的小部件作为一个类。大概是这样的:

class MyWidget(self, tkinter.Frame):
    def __init__(self, *args, **kwargs):
        tkinter.Frame.__init__(self, *args, **kwargs)
        self.entry = tkinter.Entry(self)
        self.button = tkinter.Button(self, text="...",
                                     command=self._on_button)
        self.button.pack(side="right")
        self.entry.poack(side="left", fill="both", expand=True)

    def _on_button(self):
        s = <call whatever dialog you want...>
        if s != "":
            self.entry.delete(0, "end")
            self.entry.insert(0, s)

...
entry = MyWidget(master)
entry.grid(...)
...
类MyWidget(self,tkinter.Frame):
定义初始化(self,*args,**kwargs):
tkinter.Frame.\uuuu init\uuuu(self,*args,**kwargs)
self.entry=tkinter.entry(self)
self.button=tkinter.button(self,text=“…”,
命令=自身。_打开按钮)
自助式按钮包(side=“right”)
self.entry.poack(side=“left”,fill=“both”,expand=True)
def_开启按钮(自身):
s=
如果s!="":
self.entry.delete(0,“结束”)
self.entry.insert(0,s)
...
entry=MyWidget(主程序)
entry.grid(…)
...

“我在这方面遇到问题的原因是E和B不断变化,因为这是在循环中运行的”。详细说明?听起来您应该将
e
b
放在class.e和b中,作为存储条目和按钮的变量。他们已经在上课了。我该怎么处理它们?它们是如何不断变化的?你重新创建它们吗?是的,这是一个循环。我可以使用字典来存储它们,但我的问题是,即使我可以访问它们的副本,我如何更改屏幕上的值?拷贝对我没有多大好处,因为我需要真实的东西来改变它。