Python:Tkinter 中的按钮小部件

标签 python tkinter

我刚刚开始使用 Tkinter 在 Python 2.7 中进行 GUI 编程。

我想要一个浏览按钮,单击该按钮将打开 Windows 文件资源管理器并将所选文件的路径返回到变量。我希望稍后使用该路径。

我正在遵循给出的代码 here 。它输出一个显示 5 个按钮的窗口,但这些按钮不执行任何操作。单击第一个按钮时,它不会打开所选文件。

同样,单击第二个按钮时,将调用 askopenfilename(self) 函数,并且它应该返回一个文件名。就像我提到的,我稍后需要该文件名。

如何将函数返回的值放入某个变量中以供将来使用?

最佳答案

在按钮回调中使用 return 是没有意义的。它不会回到任何地方。回调保存数据的方法是将其存储在全局变量中,如果使用类,则将其存储在实例变量中。

def fetchpath():
    global filename
    filename = tkFileDialog.askopenfilename(initialdir = 'E:')

FWIW(与问题无关):您犯了一个非常常见的错误。在 python 中,当您执行 foo=bar().baz() 时,foo 会获取 baz() 中的值。因此,当您这样做时:

button = Button(...).pack()

button 将采用 pack() 的值,该值始终返回 None。如果您希望保存对正在创建的小部件的实际引用,则应该将小部件创建与小部件布局分开。即使您不是,将两者分开也是一个好习惯。

关于Python:Tkinter 中的按钮小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32693935/

相关文章:

python - 有没有办法在 Tkinter 中暂停和恢复线程?

python - 如何从云端或服务器读取excel文件?

python - 使用 Python 中的 win32com 加载 Excel 加载项

python - tkinter 中按钮后面的图像(照片图像)

python - TensorFlow tf.reshape Fortran 命令(像 numpy)

python - tensorflow - tf.data.Dataset 在批处理之前随机跳过样本以获得不同的批处理

python - tkinter中的输入错误

python - 如何在 tkinter 文本小部件中为文本的当前长度制作许多标签

python - 检查 "if"语句的函数出现问题

python - ttk.Progressbar 被复制