python lable文本换行_python中,怎么更新labelz中的文本

匿名用户

1级

2014-10-05 回答

展开全部

#-*- coding: utf-8 -*-

'''

按照我个人的理解:

你的time.sleep调用在了mainloop之前,就是在显示label之前delay就已经完成了,同样config也完成了,所以直接显示了text=2的结果。

但是即使是在label弹出显示之后调用sleep函数(我也试过了),还有一个问题,就是sleep是阻塞式执行的,sleep完之前用户进行不了任何操作,UI也无法更新,必须要等到sleep做完了才能发生。

所以我另外开了一个线程,用于延迟,延迟完成之后通过回调函数通知UI进行更新。

废话不多了,下面是代码,我用的时python 2.7.8。

如果有说的不对的地方,请高手指点。

'''

from Tkinter import *

import time

import threading

#计时线程 用于延时

class MyThread(threading.Thread):

# sleeptime为需要延迟的时间

# callback为延迟结束后触发的回调函数

def __init__(self,id,sleeptime,callback):

threading.Thread.__init__(self)

self.id=id

self.callback = callback

self.sleeptime = sleeptime

# 重写线程run函数

def run(self):

time.sleep(self.sleeptime)

# 延时完成后传入回调函数

self.callback()

class Example(Frame):

def __init__(self, parent):

Frame.__init__(self, parent)

self.parent = parent

self.label = None

self.initUI()

#初始化窗体

def initUI(self):

self.label = Label(self, text='1')

self.label.bind('',self.onVis)

self.label.pack()

self.parent.title("Label")

self.pack()

#在label显示后进行调用

def onVis(self,*args):

print "Label Visible!"

# 创建一个新的线程用于延迟,并且传入changeText作为回调函数

t = MyThread(001,2,self.changeText)

t.start()

#在延迟完成后进行调用,与Mythread的callback绑定

def changeText(self):

self.label.config(text = '10')

window = Tk()

app = Example(window)

window.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值