Python tkinter label 更新方法

网上看的两个例子关于tkinter界面更新的,简单易懂,分享一下。

例子_1:

代码_1:

from tkinter import Tk, Checkbutton, Label

from tkinter import StringVar, IntVar

root = Tk()

text = StringVar()

text.set('old')

status = IntVar()

def change():

if status.get() == 1: # if clicked

text.set('new')

else:

text.set('old')

cb = Checkbutton(root, variable=status, command=change)

lb = Label(root, textvariable=text)

cb.pack()

lb.pack()

root.mainloop()

例子_2:

代码_2:

from tkinter import *

import time

class StopWatch(Frame):

'''实现一个秒表部件'''

msec = 50

def __init__(self, parent=None, **kw):

Frame.__init__(self, parent, kw)

self._start = 0.0

self._elapsedtime = 0.0

self._running = False

self.timestr = StringVar()

self.makeWidgets()

self.flag = True

def makeWidgets(self):

'''制作时间标签'''

l = Label(self, textvariable = self.timestr)

self._setTime(self._elapsedtime)

l.pack(fill = X, expand = NO, pady = 2, padx = 2)

def _update(self):

self._elapsedtime = time.time() - self._start

self._setTime(self._elapsedtime)

self._timer = self.after(self.msec, self._update)

def _setTime(self, elap):

'''将时间格式改为 分:秒:百分秒'''

minutes = int(elap/60)

seconds = int(elap-minutes*60.0)

hseconds = int((elap - minutes*60.0 - seconds) *100)

self.timestr.set('%2d:%2d:%2d' %(minutes, seconds, hseconds))

def Start(self):

if not self._running:

self._start = time.time() - self._elapsedtime

self._update()

self._running = True

def Stop(self):

'''停止秒表'''

if self._running:

self.after_cancel(self._timer)

self._elapsedtime = time.time() - self._start

self._setTime(self._elapsedtime)

self._running = False

def Reset(self):

'''重设秒表'''

self._start = time.time()

self._elapsedtime = 0.0

self._setTime(self._elapsedtime)

def stopwatch(self):

if self.flag == True:

self.pack(side = TOP)

Button(self, text = 'start', command = self.Start).pack(side = LEFT)

Button(self, text = 'stop', command = self.Stop).pack(side = LEFT)

Button(self, text = 'reset', command = self.Reset).pack(side = LEFT)

Button(self, text = 'quit', command = self.quit).pack(side = LEFT)

self.flag = False

class Watch(Frame):

msec = 1000

def __init__(self, parent=None, **kw):

Frame.__init__(self, parent, kw)

self._running = False

self.timestr1 = StringVar()

self.timestr2 = StringVar()

self.makeWidgets()

self.flag = True

def makeWidgets(self):

l1 = Label(self, textvariable = self.timestr1)

l2 = Label(self, textvariable = self.timestr2)

l1.pack()

l2.pack()

def _update(self):

self._settime()

self.timer = self.after(self.msec, self._update)

def _settime(self):

today1 = str(time.strftime('%Y-%m-%d', time.localtime(time.time())))

time1 = str(time.strftime('%H:%M:%S', time.localtime(time.time())))

self.timestr1.set(today1)

self.timestr2.set(time1)

def start(self):

self._update()

self.pack(side = TOP)

if __name__ == '__main__':

def main():

root = Tk()

root.geometry('250x150')

frame1 = Frame(root)

frame1.pack(side = BOTTOM)

sw = StopWatch(root)

stpwtch = Button(frame1, text = '秒表', command = sw.stopwatch)

stpwtch.pack(side = RIGHT)

mw = Watch(root)

mywatch = Button(frame1, text = '时钟', command = mw.start)

mywatch.pack(side = LEFT)

root.mainloop()

main()

以上这篇Python tkinter label 更新方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是 Python tkinter label 更新方法 的全部内容, 来源链接: utcz.com/z/360953.html

回到顶部