0

我在 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()在参数中包含了通过比例获得的新值。

4

1 回答 1

1

您可以创建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()
于 2019-01-06T14:15:52.530 回答