Tkinter编程应知应会(13)-数值范围控件Scale
原创
©著作权归作者所有:来自51CTO博客作者大连木匠的原创作品,请联系作者获取转载授权,否则将追究法律责任
数值范围控件Scale可以用来调整数值的大小。
本示例使用Scale控件控制标签字体的大小和颜色。以下是动作视频:
首先准备各种信息列表并生成字体。
#font setting.font_size = 12font_family = ['Times','Arial', 'Roma']font_weight = ['bold', 'normal']font_slant = ['italic','roman','normal']
# create fontlabel_font = Font(family=font_family[0], size=font_size, weight=font_weight[0], slant=font_slant[0])
使用上面生成的字体构建一个演示对象标签:
# create a label to display message.label = Label(root, text='ScaleTest', font=label_font, foreground="#000000",)label.grid(row=0, column=0, columnspan=4, sticky=E + W)
构建切换下划线和删除线的Checkbutton控件:
#toggle underline.def toggle_underline(): under_line = label_font.cget('underline') label_font.config(underline=not under_line)# create check button.ub = Checkbutton(root,text="Underline",command=toggle_underline)ub.grid(row=1, column=0, columnspan=2)#toggle overstrike.def toggle_overstrike(): over_strike = label_font.cget('overstrike') label_font.config(overstrike=not over_strike)#create check button.ob = Checkbutton(root,text="Overstrike",command=toggle_overstrike)ob.grid(row=1, column=1, columnspan=2)
构建调整字体和粗细的Spinbox控件。
#label of readonly spinbox.Label(root, text='Family').grid(row=2,column=0, sticky=E)def family_changed(): label_font.config(family=fb.get())# create a value spinbox.fb = Spinbox(root, values=font_family, wrap=True, state='readonly', command=family_changed)fb.grid(row=2, column=1, columnspan=2, sticky=W+E)
#label of weight spinbox.Label(root, text='Weight').grid(row=3,column=0, sticky=E)def weight_changed(): label_font.config(weight=wb.get())# create a weight spinbox.wb = Spinbox(root, values=font_weight, wrap=True, state='readonly', command=weight_changed)wb.grid(row=3, column=1, columnspan=3, sticky=W+E)
到这里为止都是之前说明过的内容,接下来是主角Scale控件。
# create a lable of size scale.Label(root, text='Size').grid(row=4,column=0, sticky=E)
def scale_changed(value): label_font.config(size=value)
# create font size scale.fs = Scale(root, relief=GROOVE, orient=HORIZONTAL, from_=10, to_=32, resolution=1, command=scale_changed)fs.grid(row=4, column=1, columnspan=3, sticky=W+E)
处理拖动事件的函数有一个参数用于传递Scale控件的当前值。有了这个参数,就不用另外从控件处取得了。这个处理用来设定字体大小,结果会直接反映到标签控件上。
# create a lable of gray scale.Label(root, text='Gray').grid(row=5,column=0, sticky=E)
def gray_changed(value): value = '{:02x}'.format(int(value)) value = '#'+value+value+value label.config(foreground=value)# create gray scale.cs = Scale(root, relief=GROOVE, orient=HORIZONTAL, from_=0, to_=255, resolution=1, command=gray_changed)cs.grid(row=5, column=1, columnspan=3, sticky=W+E)
调整颜色的处理和字体大小基本一样,只是生成颜色时使用了字符串格式化和合并。
完整代码可以从下面的链接下载:
https://github.com/xueweiguo/TkinterPrimer/blob/master/Sample/13%20Scale.py
觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】