Tkinter 库中,支持通过滑动滑块(Scale)来设置属性值,最常见的就是设定音量,如图 1 所示便是MAC上的音量调节滑块:

图 1 MAC上的音量控制器

图 2 所示便是 Windows 上的音量调节滑块:

图 2 Windows上的音量控制器

创建滑块的方法是:

scale_obj = tk.Scale(父亲组件)

常用的滑块属性包括:

取值范围,默认是 0 到 100,也可以用 from 和 to 来表示范围;

方向属性 orient,其初始是竖向的,如果希望是横向的,需要设置为 tk.HORIZONTAL;

组件的长度 length,单位是像素,如果该值比较大,就表示滑块的尺寸比较大;

分辨率 resolution,表示可以增加或减少的最小值;

回调函数 command(),就是在拖动滑块时调用该函数来通知滑块的运动事件。

下面编写一个游戏程序,在游戏开始时,程序输出一个 1 到 100 之间的整数值,现在需要拖动滑块到该值对应的位置,然后单击“测量一下”按钮来查看当前滑块对应的真实值,看看自己对位置估计的能力。如果不太满意,可以单击“再来一次”按钮来进行下一次测试。

下面是完整的代码:

import sys # 引入sys模块,用来判断当前的解释器是Python 2还是Python 3

if sys.version_info.major == 3: # 如果是Python 3

import tkinter as tk

elif sys.version_info.major == 2: # 如果是Python 2

import Tkinter as tk

import random # 引入random模块,出题用的

class DemoApplication(tk.Frame): # 定义一个窗口类

def measure(self):

# 还没有测量

if self.button_operation.state == 0:

real_val = self.scale_bar.get() # 得到真实值

self.real_label['text'] = u"你的真实值为%d" % real_val

self.button_operation["text"] = u"再来一次" # 修改按钮文字

self.button_operation.state = 1 # 修改状态

else: # 已经测量过了

self.expected_val = random.randint(0, 100)

expected_label_txt = u"期待的值为%d" % self.expected_val

self.expected_label['text'] = expected_label_txt

self.real_label['text'] = ""

self.button_operation.state = 0

self.button_operation["text"] = u"测量一下"

def createWidgets(self):

self.expected_val = random.randint(0, 101)

expected_label_txt = u"期待的值为%d" % self.expected_val

self.expected_label = tk.Label(main_win, text=expected_label_

txt)

self.expected_label.pack()

self.scale_bar = tk.Scale(main_win, orient=tk.HORIZONTAL, showvalue=0)

self.scale_bar['length'] = 500

self.scale_bar.pack()

self.real_label = tk.Label(main_win, text="")

self.real_label.pack()

self.button_operation = tk.Button(main_win)

self.button_operation.state = 0

self.button_operation["text"] = u"测量一下"

self.button_operation["command"] = self.measure

self.button_operation.pack()

def __init__(self, master=None):

tk.Frame.__init__(self, master)

self.pack()

self.createWidgets()

main_win = tk.Tk()

main_win.title(u"试试手感")

main_win.geometry("600x100")

app = DemoApplication(master=main_win)

app.mainloop()

运行后的效果如图 3 所示。

图 3 估算位置初始画面

拖动滑块到估计的位置,然后单击“测量一下”按钮会显示测试结果,如图 4 所示。

图 4 查看实际值

python中scale的用法_Tkinter Scale滑块组件的用法相关推荐

  1. Python中threading的join和setDaemon的区别及用法 例子

    Python中threading的join和setDaemon的区别及用法 Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别. 1.join ...

  2. python try else多余的设计_在python中利用try..except来代替if..else的用法

    在有些情况下,利用try-except来捕捉异常可以起到代替if-else的作用. 比如在判断一个链表是否存在环的leetcode题目中,初始代码是这样的 # Definition for singl ...

  3. python中os.path.isdir()等函数的作用及用法

    一 用法和概念: Python中的os模块用于和系统进行交互,其中: 1.os.listdir()用于返回一个由文件名和目录名组成的列表,需要注意的是它接收的参数需要是一个绝对的路径. 2.os.pa ...

  4. python中os.path.isdir()等函数的作用和用法

    一 用法和概念: Python中的os模块用于和系统进行交互,其中: 1 os.listdir()用于返回一个由文件名和目录名组成的列表,需要注意的是它接收的参数需要是一个绝对的路径. 2 os.pa ...

  5. python中星号变量传参的几种特殊用法

    python中星号变量的几种特殊用法 原文:https://www.jianshu.com/p/77acbc1b0d3e 在Python中星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法&quo ...

  6. python中的if判断,和while循环的用法

    程序的三种执行流程 1.顺序---从上到下 2.分支---根据if条件语句判断,决定执行规则 3.循环---使用while让特定的代码重复执行 if使用的方法案例 #if的实战小练习 #和电脑石头剪刀 ...

  7. python中输出函数是什么_python输出语句print的用法是什么?

    python输出语句"print()"是式样化输出函数,用于打印输出."print()"函数会自动换行:printf()函数的语法为:"printf( ...

  8. python中mainloop什么意思_Python Turtle mainloop()用法

    我有一个online tutorial的以下代码来学习基于事件的编程,方法是在点击鼠标时使停止灯改变状态.这里是我的代码的全部:Python Turtle mainloop()用法 import tu ...

  9. Python中threading的join和setDaemon的区别及用法

    Python多线程编程时经常会用到join()和setDaemon()方法,基本用法如下: join([time]): 等待至线程中止.这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或 ...

最新文章

  1. c/c++基础 输入函数/流
  2. cython python3_30倍!使用Cython加速Python代码
  3. 分布式存储图解_BERT的youxiu变体:ALBERT论文图解介绍
  4. 如何解决多机房、多网络下的物联网部署方案?
  5. 突发!Java首度“落泪”,愿永久祝福Python!网友:我也想哭!
  6. hikaripool信息_聊聊hikari连接池的fixed pool design
  7. 利用低代码从0到1开发一款小程序
  8. Global Mapper 裁剪
  9. python计算皮尔森相关系数
  10. 【intellij】External and inferred annotations
  11. 新闻与传播c刊_3本新闻传播类期刊入围新版C刊扩展目录
  12. ChatGPT提问指令大全
  13. 台式计算机摄像头怎么打开,电脑外接摄像头怎么打开怎么用
  14. 联想Idealpad 710s - 13IKB 重装系统教程以及遇到的问题
  15. MethodParameter
  16. 图书推荐|计算机组成与设计(原书第5版) 硬件软件接口 RISC-V
  17. 红薯微剧场 | 开源众包发包记第一集 —— 前端篇
  18. 华为认证之HCIP-Video Conference
  19. 煤矿智能化相关50项团体标准征求意见
  20. 微软输入法,中文模式下使用英文标点

热门文章

  1. css 鼠标悬浮样式_【技术】CSS设置链接鼠标(失效)不能点样式
  2. Maven新建项目的JDK版本类型问题
  3. linux基础练习,Linux基础指令练习
  4. mysql打错了怎么办_数据库出错了怎么办?
  5. 基于JAVA+Servlet+JSP+MYSQL的超市管理系统
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的论坛管理系统
  7. 1. 概述--从零起步实现基于Html5的WEB设计器Jquery插件
  8. SQL Server中时间格式转换函数convert()的使用
  9. Bluetooth vs. Wi-Fi(IEEE 802.11)
  10. Ubuntu(Deepin)搭建Android开发环境(Android Studio)