当前位置: 首页 > 面试题库 >

在Tkinter的背景中运行无限循环

华良才
2023-03-14
问题内容

我希望代码在后台运行并定期更新我的GUI。我该怎么做?

例如,假设我想在GUI代码的背景中执行以下操作,如下所示:

x = 0

while True:
   print(x)
   x = x + 1
   time.sleep(1)

这是GUI代码:

class GUIFramework(Frame):

    def __init__(self,master=None):
        Frame.__init__(self,master)
        self.master.title("Volume Monitor")
        self.grid(padx=10, pady=10,sticky=N+S+E+W)
        self.CreateWidgets()

    def CreateWidgets(self):
        textOne = Entry(self, width=2)
        textOne.grid(row=1, column=0)

        listbox = Listbox(self,relief=SUNKEN)
        listbox.grid(row=5,rowspan=2,column=0,columnspan=4,sticky=N+W+S+E,pady=5)
        listbox.insert(END,"This is an alert message.")

if __name__ == "__main__":
    guiFrame = GUIFramework()
    guiFrame.mainloop()

问题答案:

尚不清楚顶部的代码应该做什么,但是,如果只想每秒(或每秒钟)调用一个函数,则可以使用该after方法。

因此,如果您只想使用进行操作textOne,则可能需要执行以下操作:

...
textOne = Entry(self, width=2)
textOne.x = 0

def increment_textOne():
    textOne.x += 1

    # register "increment_textOne" to be called every 1 sec
    self.after(1000, increment_textOne)

您可以将此函数作为您类的方法(在本例中称为callback),您的代码将如下所示:

class Foo(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.x = 0
        self.id = self.after(1000, self.callback)

    def callback(self):
        self.x += 1
        print(self.x)
        #You can cancel the call by doing "self.after_cancel(self.id)"
        self.id = self.after(1000, self.callback)

gui = Foo()
gui.mainloop()


 类似资料:
  • 问题内容: 有没有一种方法可以使用Tkinter在Python 3.x中创建“加载屏幕”?我的意思是像Adobe Photoshop的加载屏幕一样,具有透明度等。我设法摆脱已经使用的框架边框: 但是,如果我这样做: 图像显示正常,但背景为灰色而不是透明。 有没有一种方法可以增加窗口的透明度,但仍可以正确显示图像? 问题答案: 在tkinter中,没有跨平台的方法可以使背景透明。

  • 基本上,我正在Python中的一个订阅计数器应用程序的“草案”上工作。我使用YouTube数据API从YouTube获取数据,然后循环这段代码以更新订阅者计数。但是由于我的GUI代码在循环之后,它永远不会开始,因为循环是无限的,永远不会结束。我尝试将GUI部分放在代码之前,以获得子计数,但没有定义任何变量,因此返回错误。所以基本上,我的问题是如何重新组织它,使其工作,子计数在GUI中更新。我听说过

  • 我正在做简单的Spring批量工作。当我启动作业时,它在无限循环中运行。它不会停止。根据我的时间表,它应该每10秒运行一次。但当工作开始时,它不会停止。它只是分别从读卡器、处理器和写入器打印系统输出。我正在为读者、处理者和作者创造工作机会。我正在按注释进行所有配置。不是通过xml。 下面是批处理配置 PersonReader。JAVA 人Writer.java 个人处理器。JAVA

  • 我知道这在StackOverflow上被问过很多次,但我尝试过很多不同的解决方案,没有一个奏效。所以我决定问问社区该怎么做。下面是我的代码中的相关片段。 请注意,这只是我的代码中从控制台输入的部分,不包含任何其他内容。我有其他东西设置,要求代码是这种格式。 将Input.HasNext()替换为Input.HasNextLine() 将input.hasnext()替换为input.next()!

  • 问题内容: 我正在使用svg图像作为背景。我正在尝试使用CSS3,但即使在应支持CSS3的浏览器(例如Chrome)中,它也似乎无法正常工作。 如果您查看此站点,将会看到(在食物图片的右侧/下方)带有红色横幅背景的背景。请注意,当您缩小窗口时,背景图像的高度会下降以保持其比例,而不是像我想要的那样拉伸。 编辑:我在FireFox上检查了它,它可以正常工作…所以这似乎是一个webkit问题。 编辑:

  • 我正在使用Python和Tkinter来创建一个游戏,我正在尝试使用不同的“屏幕”(主菜单和到目前为止的关卡编辑器),每个屏幕都是对象,在主菜单屏幕()的类定义中,在第11行的中,我试图使用以更改“主菜单”的宽度、高度和背景色。帧。但当我运行这段代码时,背景仍然是灰色的。我猜我错过了一些明显的东西(我对Tkinter和类还是相当陌生)。任何帮助都将不胜感激——谢谢。