我有一个简单的脚本可以将一些值保存到数据库中,我还有一个在Tkinter中构建的窗口。所以基本上我的问题是我想连续调用savebase()函数,直到窗口保持打开状态。怎么办呢?
到现在为止,当窗口打开时,我只能运行一次该功能。我也可以按一个按钮重复它,但它不能解决目的,因为我希望这样的事情每秒完成2次。
我尝试的简化版本如下:
import Tkinter
import saveDB
def doing_it():
a = saveDB.save()
a.savebase()
window = Tkinter.Tk()
window.title("Saving Database")
window.geometry("300x300+100+100")
first_button=Tkinter.Button(window, text='Save DB', command=doing_it,
fg='white', bg='black').grid(row=3,column=2)
window.mainloop()
是否名称 == main(),这样做的方法是什么?在我搜索上述问题时,我遇到了它,虽然我对此一无所知。
答案 0 :(得分:2)
使用after
- 方法:
def doing_it():
a = saveDB.save()
a.savebase()
window.after(500, doing_it)
window = Tkinter.Tk()
window.title("Saving Database")
window.geometry("300x300+100+100")
window.after(500, doing_it)
window.mainloop()
答案 1 :(得分:1)
你在一个文章中有一个跟进问题,而且我没有足够的代表发表评论,所以我会把它留在这里。
您说您要将文本分配给标签,但它没有更新。我不是100%肯定你的意思,但这里有一个我正在做的事情的工作范例,也应该适合你。
#! /usr/bin/env python3.4
from tkinter import *
import time
GLOBVAR = 0
class App(Tk):
def __init__(self):
Tk.__init__(self)
self.geometry("300x300+500+200")
self.wm_title("Test update label")
self.label = Label(text="you won't see this")
self.label.pack(pady = (150, 0))
self.update_clock()
def update_clock(self):
global GLOBVAR
GLOBVAR += 1
self.label.configure(text = GLOBVAR)
self.after(1000, self.update_clock)
app=App()
app.mainloop()
在这种情况下,更新标签小部件的关键部分是
self.label.configure()
致电。