python - 如何将通过比例获得的新值传输到另一个函数?
问题描述
我在 Python2.7 上,我尝试将从 a 获取的值传输scale
到另一个必须响应点击的函数。
from tkinter import *
fenetre = Tk()
def other(ev):
m=2
l=3
vol_piano=maj()
print(vol_piano)
def maj(newvalue):
vol_piano = newvalue
print(vol_piano)
return vol_piano
value = DoubleVar()
scale = Scale(fenetre, variable=value, orient ='vertical', from_ = 0, to= 100,
resolution = 1, tickinterval= 5, length=400, label='Volume Piano',command=maj)
scale.pack(side=RIGHT)
canvas = Canvas(fenetre, width=100, height=400, bg="white")
curseur1 = canvas.create_line(0, 0, 0, 0)
canvas.pack(side=LEFT)
canvas.bind("<Button-1>", other)
fenetre.mainloop()
问题是我不能使用return,因为我的函数maj()
在参数中包含了通过比例获得的新值。
解决方案
您可以创建vol_piano
一个全局变量。Scale
每当在函数内移动时更新其值maj()
。每当单击画布时,只需打印出vol_piano
.
import tkinter as tk
fenetre = tk.Tk()
vol_piano = None
def other(ev):
global vol_piano
print(vol_piano)
def maj(newvalue):
global vol_piano
vol_piano = newvalue
value = tk.DoubleVar()
scale = tk.Scale(fenetre, variable=value, orient ='vertical', from_ = 0, to= 100,
resolution = 1, tickinterval= 5, length=400, label='Volume Piano',command=maj)
scale.pack(side="right")
canvas = tk.Canvas(fenetre, width=100, height=400, bg="white")
canvas.pack(side="left")
canvas.bind("<Button-1>", other)
fenetre.mainloop()
推荐阅读
- apache-spark - 由于 DeadlineExceededException,Spark 作业无法写入 Alluxio
- sql - 如何进行 SQL 查询,如果没有记录则返回 null,如果有则返回值?
- terminal - Bash 按下 ç 或 Ç 发出哔哔声,而不是在 PASE 中写键
- vb.net - 带计时器的 RichTextBox 阅读器
- node.js - 如何在节点js中下载大文件时捕获互联网断开事件
- javascript - 从 firebase 下载的对象行为不正常
- com - 通过使用具有有限可变参数的模板函数来限制允许的 COM 接口 (std::is_same)
- node.js - 柴期望不明确的行为
- c++ - 如何在 C++ 中发现数组中的元素数量
- websphere - 卡在 Websphere QM 中的消息