python - Tkinter 按钮命令返回值?

标签 python button callback tkinter

我在从 tkinter Button 命令返回变量时遇到问题。这是我的代码:

class trip_calculator:

    def __init__(self):
        file = self.gui()

    def gui(self):
        returned_values = {}

        def open_file_dialog():
            returned_values['filename'] = askopenfilename()

        root = Tk()
        Button(root, text='Browse', command= open_file_dialog).pack()
        filepath = returned_values.get('filename')
        root.mainloop()
        return filepath
        root.quit()

我只想返回文本文件的文件路径。 tkinter 窗口已打开,我可以浏览并选择文件,但它不会返回路径。

最佳答案

按照您现在的代码方式,filepath 在您的窗口向用户显示之前就被分配了值。因此字典不可能包含用户最终选择的文件名。最简单的修复方法是将 filepath = returned_values.get('filename') 放在 mainloop 之后,这样直到用户关闭窗口时主循环结束时才会分配它。

from Tkinter import *
from tkFileDialog import *

class trip_calculator:

    def gui(self):

        returned_values = {} 

        def open_file_dialog():
            returned_values['filename'] = askopenfilename()

        root = Tk()
        Button(root, text='Browse', command= open_file_dialog).pack()


        root.mainloop()

        filepath = returned_values.get('filename')
        return filepath

        root.quit()

print(trip_calculator().gui())

关于python - Tkinter 按钮命令返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19281280/

相关文章:

c++ - 如何做一个简单的C++通用回调?

Miglayout 中的回调停靠演示

python - 如何在 Python 中创建列表列表

python - 按小时分割时间戳

Java Android : Make a word (from a paragraph) into a button

ios - 使单元格不可点击,但其上的按钮仍应可点击

javascript - C++ 信号回调(如 javascript)

python - 使用 for 循环构建 NumPy 数组(列表的列表?)

python - 使用 Python/Django 从 html 获取第一张图片

c# - 在 WPF 中单击按钮执行文件操作