Python GUI编程入门(28)-Themed widget(续)_微信公众号

本文说明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​

觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请关注微信公众号【面向对象思考】