Python GUI编程入门(28)-Themed widget(续)
原创
©著作权归作者所有:来自51CTO博客作者大连木匠的原创作品,请联系作者获取转载授权,否则将追究法律责任

本文说明Ttk库中菜单按钮Menubutton、进度条Progressbar和组合列表框Combobox的用法。首先看视频:
首先是菜单按钮Menubutton。代码中只是简单构建了一个退出菜单。
menu = Menubutton(root, text="File")
menu.grid(row=0, column=0, sticky=W)
file_menu = Menu(menu, tearoff=0)
menu.config(menu=file_menu)
file_menu.add_command(label="Exit", command=exit)
接下来是进度条控件Progressbar。
p_value = IntVar()p_value.set(0)progress = Progressbar(root, maximum=100, variable=p_value)progress.grid(row=1, column=0, columnspan=3, sticky='ew')
def on_timer(): if p_value.get() < progress.cget('maximum'): p_value.set(p_value.get() + 1) else: timer.stop()
timer=Timer(root, 100, on_timer)
进度条的最大值固定为100,值变量指定为p_value。当p_value的值发生改变时,进度表也会随之更新,反之亦然。
on_timer的内容是每次将p_value的值加1,直至Progressbar的最大值为止。on_timer会在被定时器timer周期性调用。
再往下是Combobox关联代码:
c_var = StringVar()c_var.set(str(timer.get_timer()))def t_changed(*args): timer.set_timer(int(c_var.get()))c_var.trace_variable('w', t_changed)
time_values=['50', '100', '200']c_box = Combobox(root, values=time_values, textvariable=c_var, state='readonly')c_box.grid(row=2, column=0)
首先构造一个字符串变量并将其初始化为定时器的定时时长。接下来为这个变量设定一个监视函数,以便根据变量值修改定时器的定时时长。最后构建一个Combobox对象。这样一来,当用户选择不同的数值时,该数值会通过c_var变量间接设定给定制器timer的定时时长。
开始和停止按钮就简单了:
start_btn = Button(root, text='Start', command=timer.start)start_btn.grid(row=2, column=1)
def stop_timer(): timer.stop() p_value.set(0)stop_btn = Button(root, text='Stop', command=stop_timer)stop_btn.grid(row=2, column=2)
完整代码可以从以下地址下载:
https:///xueweiguo/TkinterPrimer/blob/master/Sample/27%20TtkWidget2.py
觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请关注微信公众号【面向对象思考】