Python ttk组合框值更新?

问题描述

我使用GUI来实现一些使用硒的Web自动化。 我有几个组合框(这里将做一个示例)

这是我的示例代码

app = Tk()


def callback(*args): # should get the updated values in ComboBox ?
    global v_sv_league
    v_sv_league = str(sv_league.get())


#List to be filled by scraper
li_leagues = []

#StringVar
sv_league = StringVar()
sv_league.trace("w",callback)

#Label
l_d_league = tk.Label(app,text='League:',bg='#1d1b29',fg='#f8f09d',font='Tahoma 10')

#ComboBox
d_league = ttk.ComboBox(app,textvariable=sv_league,values=li_leagues)


#Scrape
def scrape():
       
        btn_tflist = wait.until(EC.element_to_be_clickable((By.XPATH,('/html/body/main/section/nav/button[3]'))))
        btn_tflist.click()

        btn_tf_filters = wait.until(EC.element_to_be_clickable((By.XPATH,'/html/body/main/section/section/div[2]/div/div/div[2]/div[2]')))
        btn_tf_filters.click()

        bol_scrape = True
        if bol_scrape is True:
            print('\n Start scraping... this might take a few minutes. Please wait and dont press anything until Trade_buddy is done!\n')

            li_leagues = []
            print('Getting leagues...\n')
            league_dropdown_menu = wait.until(EC.element_to_be_clickable((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)


app.mainloop()

因此,基本上,这只是我代码的一小部分,但这就是我为组合框之一所获得的。 您可以看到我将在代码中的某个时候要求def scrape来抓取数据并填充列表li_leagues。 但是,我的组合框没有刷新内容,并且保持空白。

对于OptionMenu,我对其进行了设置(带有其他代码),但是我无法使其与comboBox一起使用。

任何建议我在这里缺少什么?

感谢插槽!

解决方法

在为列表添加值之后,尝试使用此行代码。

.....
export_league = export_league.replace(',','')
li_leagues.append(export_league)
c_league.config(values=li_leagues)

config()方法充当更新程序,该更新程序在被调用时只会更新您的小部件。

希望这会有所帮助。

欢呼