簡體   English   中英

從StringVar更新Tkinter標簽會延遲

[英]Updating Tkinter label from a StringVar happens on a delay

我有一個綁定到tkinter StringVar的tkinter標簽對象,原則上應該在更改StringVar時使它更新。 這是聲明:

self.db_info_string = tk.StringVar()
self.db_info_string.set('Number of events: ' +str(len(self.eventsdb_subset)))
self.db_info_display = tk.Label(parent, textvariable=self.db_info_string)

在GUI的其他地方,我有一個按鈕,按下該按鈕時會調用此函數:

def filter_db(self):
    filterstring = self.filter_entry.get()
    print filterstring
    eventsdb_subset = self.eventsdb_subset
    self.eventsdb_subset = sqldf('SELECT * from eventsdb_subset WHERE %s' % filterstring,locals())
    self.db_info_string.set('Number of events: ' +str(len(eventsdb_subset)))

(我知道在這樣的數據庫中使用原始輸入時會遇到的問題-目前這僅是出於測試目的,以擺脫GUI編程的束縛,並且在日趨成熟之前將被清除)

您可以看到此函數調用中StringVar的值已更改。 但是,直到第二次調用此功能時,標簽文本才更新-即,標簽文本滯后於該功能的一次調用應顯示的實際值。

有什么方法可以強制在filter_db()中更新標簽?

eventsdb_subset = self.eventsdb_subset
self.eventsdb_subset = sqldf('SELECT * from eventsdb_subset WHERE %s' % filterstring,locals())
self.db_info_string.set('Number of events: ' +str(len(eventsdb_subset)))

eventsdb_subsetself.eventsdb_subset是自變量。 分配給一個不會改變另一個的值。

第三行, eventsdb_subset仍然具有運行self.eventsdb_subset = sqldf(...)之前的值。 換句話說,它總是會落后一個select操作。

使用self.eventsdb_subset而不是eventsdb_subset的值更新StringVar。

eventsdb_subset = self.eventsdb_subset
self.eventsdb_subset = sqldf('SELECT * from eventsdb_subset WHERE %s' % filterstring,locals())
self.db_info_string.set('Number of events: ' +str(len(self.eventsdb_subset)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM