仅打印滑块tkinter中更改的值tk.刻度阵列

2024-10-03 04:33:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我结合了this answer&;this answer来编写一个脚本,该脚本在tkinter中的滑块每次调整时都会输出不同的值。它可以工作,但打印数组的所有值,理想情况下只希望看到更改后的值。有人能给我指出正确的方向吗?在

import Tkinter as tk

scales=list()
Nscales=10

class App:
    def __init__(self):
    self.root = tk.Tk()
    for i in range(Nscales):
        self.slider = tk.Scale(self.root, from_=1, to=5, orient=tk.HORIZONTAL) # creates widget
        self.slider.bind("<ButtonRelease-1>", self.updateValue)
        self.slider.pack() 
        self.slider.set(3) 
        scales.append(self.slider) # stores widget in scales list
    self.root.mainloop()
def updateValue(self, event):
    for i in range(Nscales):
        print ("Scale %d has value %d" %(i,scales[i].get()))

app=App()

Tags: answerinself脚本appfordefrange
1条回答
网友
1楼 · 发布于 2024-10-03 04:33:16

这将是一个理想的地方,使您自己的规模小部件。您可以手动分配数字,也可以使用类变量来跟踪它们:

import Tkinter as tk

Nscales=10

class NslScale(tk.Scale):
    '''A custom Scale that prints its value on mouserelease'''
    count = 0
    def __init__(self, master=None, **kwargs):
        tk.Scale.__init__(self, master, **kwargs)
        self.num = self.count
        NslScale.count += 1
        self.bind("<ButtonRelease-1>", self.updateValue)
    def updateValue(self, event):
        print("Scale %d has value %d" %(self.num, self.get()))

root = tk.Tk()
for i in range(Nscales):
    slider = NslScale(root, from_=1, to=5, orient=tk.HORIZONTAL) # creates widget
    slider.pack()
    slider.set(3)
root.mainloop()

而且,你的应用类没有增加任何价值。把它丢掉。在

相关问题 更多 >