如何重复运行python脚本

时间:2015-06-15 16:46:20

标签: python tkinter

我有一个简单的脚本可以将一些值保存到数据库中,我还有一个在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(),这样做的方法是什么?在我搜索上述问题时,我遇到了它,虽然我对此一无所知。

2 个答案:

答案 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()致电。