如何解决python tkinter填充选项菜单与功能列表
我创建了一个tkinter GUI。
我已将功能def scrape
绑定到按钮。
当我按下按钮时,硒将从不同的元素中获取数据并将其存储在不同的列表中。
在我的GUI中,我希望每个列表都有一个OptionMenu
。
问题是,列表是在我按下按钮后创建的。
当我想将OptionMenu
添加到GUI并加载列表作为值时,我得到一个错误,没有变量“列表”。这是因为app.mainloop()
开始时尚未创建列表。
这是我的抓取代码:
def scrape():
li_leagues = []
print('Getting leagues...\n')
#click the dropdown menue to open the folder
league_dropdown_menu = driver.find_element_by_xpath('/html/body/main/section/section/div[2]/div/div[2]/div/div[1]/div[1]/div[7]/div')
league_dropdown_menu.click()
time.sleep(1)
# scrap all text
scrape_leagues = driver.find_elements_by_xpath("//li[@class='with-icon' and contains(text(),'')]")
for league in scrape_leagues:
export_league = league.text
export_league = str(export_league)
export_league = export_league.replace(',','')
li_leagues.append(export_league)
这是我为OptionMenu
做的尝试:
str_quality = StringVar()
str_quality.set(li_quality[0])
#Dropdown
d_quality = OptionMenu(app,str_quality,*li_quality)
我如何才能将OptionMenu
添加到GUI中?
编辑:
在调用li_quality = []
之前,我将列表的名称作为空列表app.mainloop()
添加到了代码中。
GUI现在正在使用OptionMenu加载。但是在我抓取数据后,它并没有得到更新。
解决方法
我不确定这是否是您想要的东西,但是我在互联网上找到了一些东西,并且我对其进行了一些修改,请看一下:
from tkinter import *
root = Tk()
def hey():
lst = [1,2,3,4]
m = a.children['menu']
for val in lst:
m.add_command(label=val,command=lambda v=sv,l=val:v.set(l))
sv = StringVar()
dummy = []
a = OptionMenu(root,sv,*dummy)
a.pack()
b = Button(root,text='Click me',command=hey)
b.pack()
root.mainloop()
此处,a
最初设置为空列表,但是单击按钮后,将从列表中填充它。
Here is the link to the discussion
替代方法:
无论如何,我建议您稍后在接收到项目之后,在函数内部创建OptionMenu
,或者使用其他能够执行此操作的小部件。我很确定ttk.Combobox
也是有可能的。
下面介绍如何使用Combobox
进行操作:
from tkinter import *
from tkinter import ttk
root = Tk()
def hey():
lst = [1,4]
a.config(value=lst)
dummy = []
a = ttk.Combobox(root,value=dummy,state='readonly')
a.pack()
b = Button(root,command=hey)
b.pack()
root.mainloop()
希望它可以帮助您获得一些想法,请让我知道是否有任何错误。
欢呼
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。