tkinter button command如何获得返回值
如下代码所示,button的command绑定的函数有一个返回值filename,请大神指教如何获取该返回值。def open_file():
filename = filedialog.askopenfilename()
return filename
root = tkinter.Tk()
tkinter.Button(root, text='打开文件', command=open_file).grid(row=0,column=0)
mainloop() 网上找了很多案例,好像直接返回值做不到,但是可以曲线救国来操作获取文件路径
而且要使用if __name__ == '__main__':这句代码
可以试试
import tkinter as tk
from tkinter import filedialog
def take_filename():
filename = filedialog.askopenfilename()
return filename
def open_file():
filename = take_filename()
print(filename)
def main():
root = tk.Tk()
tk.Button(root, text='打开文件', command=open_file).grid(row=0, column=0)
root.mainloop()
if __name__ == '__main__':
main()
疾风怪盗 发表于 2020-9-17 12:05
网上找了很多案例,好像直接返回值做不到,但是可以曲线救国来操作获取文件路径
而且要使用if __name__ == ...
这不是只把值打印出来,并不能取到值啊{:10_329:} sea哈 发表于 2020-9-17 15:36
这不是只把值打印出来,并不能取到值啊
能打印出来,不就已经取到值了么?这个值就是路径咯?还是我理解的不对?所以,你是想要什么值?能不能说的清楚点?
这个open_file()函数,获取有了路径,不就可以写代码来打开文件了么? 疾风怪盗 发表于 2020-9-17 16:16
能打印出来,不就已经取到值了么?这个值就是路径咯?还是我理解的不对?所以,你是想要什么值?能不能 ...
我想在另一个函数使用这个路径,该怎么弄 def shiyong(filename):
print(filename)
def open_file():
filename = take_filename()
shiyong(filename)
你把open_file当成一个主程序,里面加入其它函数调用,不就好了么?{:10_284:}难道不是这样的意思么? 疾风怪盗 发表于 2020-9-17 16:32
你把open_file当成一个主程序,里面加入其它函数调用,不就好了么?难道不是这样的意思么?
那如果我添加另外一个按钮,这个按钮按下后会执行另一个函数,这个函数也要用到这个filename,怎么办呢{:10_250:} sea哈 发表于 2020-9-17 19:35
那如果我添加另外一个按钮,这个按钮按下后会执行另一个函数,这个函数也要用到这个filename,怎么办呢{: ...
那不清楚,没学过,也没做过TK
pyside2就简单很多了,搞个文本框,把路径放到文本框里,然后其他函数要调用,就获取这个文本框的内容就行了
但是TK昨天试了下,没成功,不知道怎么弄 疾风怪盗 发表于 2020-9-17 19:38
那不清楚,没学过,也没做过TK
pyside2就简单很多了,搞个文本框,把路径放到文本框里,然后其他函数 ...
我现在就是这样弄得,不过用的是entry组件做的文本框 sea哈 发表于 2020-9-17 20:26
我现在就是这样弄得,不过用的是entry组件做的文本框
那你把代码贴出来看看呗,我昨天没做出来,学习下 疾风怪盗 发表于 2020-9-17 20:28
那你把代码贴出来看看呗,我昨天没做出来,学习下
from tkinter import *
from tkinter import filedialog
root = Tk()
frame1 = Frame(root)
v1 = StringVar()#路径显示
def openfile():
filename = filedialog.askopenfilename()
v1.set(filename)
Label(frame1,text = '请选择文件').grid(row=0,column=0,padx = 10,pady = 10)
file_path = Entry(frame1,textvariable = v1,state='readonly',\
bg = 'white',width = 30).grid(row=0,column=1)
Button(frame1,text = '打开文件',command = openfile).\
grid(row=0,column=2,padx = 30,pady = 10)
frame1.pack(pady = 5)
mainloop()
然后用v1.get()就可以访问路径了 sea哈 发表于 2020-9-17 20:58
然后用v1.get()就可以访问路径了
我一开始也是这样写的
然后在哪里可以v1.get()?还是没法调用啊
疾风怪盗 发表于 2020-9-17 21:20
我一开始也是这样写的
然后在哪里可以v1.get()?还是没法调用啊
v1.get()就是返回entry内的值
你试试这个
from tkinter import *
from tkinter import filedialog
root = Tk()
frame1 = Frame(root)
v1 = StringVar()#路径显示
def openfile():
filename = filedialog.askopenfilename()
v1.set(filename)
def fun():
a = v1.get()
print (a)
Label(frame1,text = '请选择文件').grid(row=0,column=0,padx = 10,pady = 10)
file_path = Entry(frame1,textvariable = v1,state='readonly',\
bg = 'white',width = 30).grid(row=0,column=1)
Button(frame1,text = '打开文件',command = openfile).\
grid(row=0,column=2,padx = 30,pady = 10)
Button(frame1,text = '打印文本框',command = fun).\
grid(row=1,column=2,padx = 30,pady = 10)
frame1.pack(pady = 5)
mainloop()
sea哈 发表于 2020-9-17 23:04
v1.get()就是返回entry内的值
你试试这个
{:10_284:}
没试着再添加一个按钮来调函数。。。。。。。。
哎一开始就是这样思路去写了,就少了一个按钮 还有一个曲线救国的办法,函数直接修改全局变量
页:
[1]