相关疑难解决方法(0)

在Python中每x秒重复执行一次函数的最佳方法是什么?

我想永远每60秒在Python中重复执行一个函数(就像目标C中的NSTimer一样).这段代码将作为守护进程运行,实际上就像使用cron每分钟调用python脚本一样,但不需要用户设置.

这个关于用Python实现的cron的问题中,解决方案似乎实际上只是sleep() x秒.我不需要这样的高级功能,所以也许这样的东西可行

while True:
    # Code executed here
    time.sleep(60)
Run Code Online (Sandbox Code Playgroud)

这段代码有可预见的问题吗?

python timer

245
推荐指数
12
解决办法
36万
查看次数

Python time.sleep

我试图在等待5秒后删除文本框内的文本,但是程序不会运行并且会在其他所有内容上休眠.还有一种方法让我只是让我的文本框睡眠,所以我可以在文本被冻结时运行其他代码吗?

from time import time, sleep
from Tkinter import *

def empty_textbox():
    textbox.insert(END, 'This is a test')
    sleep(5)
    textbox.delete("1.0", END)

root = Tk()

frame = Frame(root, width=300, height=100)
textbox = Text(frame)

frame.pack_propagate(0)
frame.pack()
textbox.pack()

empty_textbox()

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

python time sleep tkinter elapsedtime

9
推荐指数
1
解决办法
3万
查看次数

一段时间后自动关闭窗口

在一个类中,在一个函数中,我正在创建一个Tkinter Canvas.这个函数正被另一个类调用,我希望Tkinter窗口弹出30秒然后自行关闭.我打电话给他

master.mainloop()
time.sleep(30)
master.destroy() 
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误

"elf.tk.call('destroy',self._w)_tkinter.TclError:无法调用"destroy"命令:应用程序已被销毁"

那我怎么能把它靠近呢?

python tkinter

6
推荐指数
1
解决办法
1万
查看次数

如何在python中调用延迟函数?

我有一个滑块,我只想在交互完成时调用特定的功能.这个想法是在500ms之后调用一个函数(而不是之前).如果滑块继续移动,则取消呼叫.换句话说,如果滑块"休息"超过500ms,则调用该函数.

谢谢

更新

    #slider

    def updateValue(self):
        #self._job = None
        #self.preview.updateContourValue(float(self.slider.get() ))
        print "updated value"

    timer = Timer(5.0, updateValue)

    def sliderCallback(self):
        timer.cancel()
        timer.start()
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
5903
查看次数

python tkinter与线程导致崩溃

我已经使用线程编写了一个python tkinter代码,以便tkinter向导通过在主线程中运行的tkinter mainloop和在单独线程中运行的后台进程自动更新.但是我注意到,运行代码后python崩溃了一段时间.此外它本质上是随机的,但python在大多数时间都会崩溃.我写了一个小的测试代码,可以显示这个问题(我的原始代码与此类似,但有一些真正的进程和许多其他功能,所以我分享测试代码).

######################################################################
 # Test Code for Tkinter with threads
import Tkinter
import threading
import Queue
import time

# Data Generator which will generate Data
def GenerateData(q):
    for i in range(1000000):
        #print "Generating Some Data, Iteration %s" %(i)
        time.sleep(0.01)
        q.put("Some Data from iteration %s. Putting this data in the queue for testing" %(i))

# Queue which will be used for storing Data
q = Queue.Queue()

def QueueHandler(widinst, q):
    linecount = 0
    while True:
        print "Running"
        if not q.empty():
            str …
Run Code Online (Sandbox Code Playgroud)

python tkinter

3
推荐指数
1
解决办法
5239
查看次数

在没有输入的情况下以设定的时间间隔刷新 tkinter 标签

在过去的几个小时里,我一直在尝试找到一种方法来刷新带有信息的标签,而无需自己输入任何内容。

我正在尝试编写的程序是从 Raspberry Pi 获取 CPU 温度并将其显示在窗口中。我需要让临时输入每 5 秒左右更新一次,但所有尝试都失败了。我尝试了 while 循环,发现它们在 tkinter 中不起作用,而且我想不出如何在没有输入的情况下不断刷新某些内容。我对 Python 很陌生,所以我确定有一种方法,但我还没有遇到过。此处的类似问题并不能得出适用于我的答案。

这是我现在的代码:

import subprocess
from tkinter import *

root = Tk()
root.title('CPU Temp')

cpuLab = Label(root, text = 'CPU Temp:',
               font =('Nimbus Mono L',14,),
               bg = 'black', fg = 'green').grid(row = 0, column = 0)

cpuTemp = subprocess.check_output(['/opt/vc/bin/vcgencmd', 'measure_temp'])

cpuVar = StringVar()
cpuDisplay = Label(root, textvariable = cpuVar,
                   font =('Nimbus Mono L',14),
                   bg = 'black', fg = 'green').grid(row = 0, column = 1)
cpuVar.set(cpuTemp[5:11])

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

这非常适合显示温度,只需重新运行即可刷新。

python subprocess tkinter raspbian

1
推荐指数
1
解决办法
6595
查看次数

标签 统计

python ×6

tkinter ×4

elapsedtime ×1

raspbian ×1

sleep ×1

subprocess ×1

time ×1

timer ×1