如何制作Python 2轴滑块

时间:2015-05-27 18:25:19

标签: python

我有办法制作2轴滑块吗?它有点像一个tkinter滑块,但它是一个盒子,当你转到右上角时,它将是两个轴的最大值。如果可能的话,我希望x轴在释放后重新回到中间,谢谢?

1 个答案:

答案 0 :(得分:1)

它不像tkinter的内置Scale小部件那样看起来像您的操作系统的原生滑块,但您至少可以实现该功能。下面创建一个Canvas,在该画布中创建一个矩形,然后允许您单击并拖动画布内的任何位置以移动矩形。松开鼠标按钮时,它将打印光标的画布坐标。用您的程序需要替换print()调用。您可以learn more about the Canvas widget自定义其外观和行为。

import tkinter as tk

class Scale2d(object):
    def __init__(self, root):
        self.root = root
        self.canvas = tk.Canvas(root, height=500, width=500)
        self.canvas.pack()
        self.canvas.bind('<1>', self.movement) # the magic
        self.canvas.bind('<B1-Motion>', self.movement) # similar magic
        self.canvas.bind('<ButtonRelease-1>', self.report) # result of magic
        self.indicator = self.canvas.create_rectangle(245,245,255,255, fill='black') # dot

    def movement(self, event): # move the dot
        self.canvas.coords(self.indicator, event.x-5, event.y-5, event.x+5, event.y+5)

    def report(self, event): # report the dot
        print(event.x, 500-event.y) # 500-event.y to invert y axis
        self.canvas.coords(self.indicator, 245, 245, 255, 255) # snap back


root = tk.Tk()
scale2d = Scale2d(root)
root.mainloop()