如何将按钮事件获取的数据传递到函数外
我在学习tkinter想要将导入的excel文件
获取它的表单名字到listbox
然后通过点击按钮选择表单,
将数据加载到程序中。
目前碰到的问题是:
我已经在listbox选择了表单
获取了表单的名字
但是无法把这个名字传递到表单之外。
先感谢有指教我的友友!!
代码如下:
# 获取excel多个分表的名字,形成一个列表
import openpyxl as oy
from tkinter import *
file_name = 'test.xlsx'
workbook = oy.load_workbook(file_name)
sheet_names = workbook.sheetnames
print(sheet_names)
# 创建窗口,下拉列表进行选择excel的分表
'''tkinter列表框按钮'''
listWin = Tk()
listWin.title('列表窗口')
listWin.geometry('500x300')
lbVal = StringVar()
lbVal.set(sheet_names)
lb = Listbox(listWin, listvariable=lbVal)
lb.pack()
labelVal = StringVar()
lab = Label(listWin, bg='red', width=6, textvariable=labelVal)
lab.pack()
def getListBoxValue():
q = lb.curselection()
sheet_name = lb.get(q)
labelVal.set(sheet_name)
return sheet_name
clickBtn=Button(listWin, text='导入表单', width=10, height=2, command=getListBoxValue)
clickBtn.pack()
listWin.mainloop()
如何将sheet_name这个变量的点击事件值传递出去???? 把它设为全局变量
import openpyxl as oy
from tkinter import *
file_name = 'test.xlsx'
workbook = oy.load_workbook(file_name)
sheet_names = workbook.sheetnames
print(sheet_names)
# 创建窗口,下拉列表进行选择excel的分表
'''tkinter列表框按钮'''
listWin = Tk()
listWin.title('列表窗口')
listWin.geometry('500x300')
lbVal = StringVar()
lbVal.set(sheet_names)
lb = Listbox(listWin, listvariable=lbVal)
lb.pack()
labelVal = StringVar()
lab = Label(listWin, bg='red', width=6, textvariable=labelVal)
lab.pack()
def getListBoxValue():
global sheet_name # 注意这行
q = lb.curselection()
sheet_name = lb.get(q)
labelVal.set(sheet_name)
clickBtn=Button(listWin, text='导入表单', width=10, height=2, command=getListBoxValue)
clickBtn.pack()
listWin.mainloop() 是要这样的东东吗
import openpyxl as oy
from tkinter import *
import tkinter.messagebox
file_name = '2022.xlsx'
workbook = oy.load_workbook(file_name)
sheet_names = workbook.sheetnames
print(sheet_names)
# 创建窗口,下拉列表进行选择excel的分表
'''tkinter列表框按钮'''
listWin = Tk()
listWin.title('列表窗口')
listWin.geometry('500x300')
lbVal = StringVar()
lbVal.set(sheet_names)
lb = Listbox(listWin, listvariable=lbVal)
lb.pack()
labelVal = StringVar()
lab = Label(listWin, bg='red', width=6, textvariable=labelVal)
lab.pack()
def listclickevent(event):
m=lb.get(lb.curselection())
tkinter.messagebox.showinfo("友情提示","您现在进行的是鼠标双击操作 \n 您选中的项目是"+m)
lb.bind("<Double-1>",listclickevent)
listWin.mainloop()
另:treeview 要比listbox 要好一些 isdkz 发表于 2023-2-28 16:10
把它设为全局变量
这个试过不行,但还差一步,别的函数要用这个作为参数传递就可以了。 wp231957 发表于 2023-2-28 16:13
是要这样的东东吗
嗯,你这个是获取了点击事件,我设置的是个按钮事件 pysunred 发表于 2023-3-2 09:46
嗯,你这个是获取了点击事件,我设置的是个按钮事件
你想实现啥呢 wp231957 发表于 2023-3-2 09:49
你想实现啥呢
我就是想让按钮事件产生的变量值传递到另外的函数中,已经实现了,谢谢啊!!
主要是对函数不熟悉
页:
[1]