如何制作Python 2轴滑块

如何制作Python 2轴滑块,python,Python,有没有办法让我做一个2轴滑块?它有点像tkinter滑块,但它是一个长方体,当你转到右上角时,它将是两个轴的最大值。如果可能的话,我希望x轴在释放时能弹回到中间位置,谢谢?它看起来不像操作系统的本机滑块,比如tkinter内置的缩放小部件,但您至少可以实现该功能。下面创建一个画布,在该画布中创建一个矩形,然后允许您单击并拖动画布中的任何位置以移动该矩形。当您松开鼠标按钮时,它将打印光标的画布坐标。用程序需要的任何内容替换print()调用。您可以自定义其外观和行为 import tkinter

有没有办法让我做一个2轴滑块?它有点像tkinter滑块,但它是一个长方体,当你转到右上角时,它将是两个轴的最大值。如果可能的话,我希望x轴在释放时能弹回到中间位置,谢谢?

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

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()
将tkinter作为tk导入
类Scale2d(对象):
定义初始化(自,根):
self.root=根
self.canvas=tk.canvas(根,高度=500,宽度=500)
self.canvas.pack()
自我。画布。绑定(“”,自我。移动)#魔法
self.canvas.bind('',self.movement)#类似的魔法
self.canvas.bind(“”,self.report)#魔法效果
self.indicator=self.canvas.create_矩形(245255255,fill='black')#点
def移动(自身、事件):#移动点
self.canvas.coords(self.indicator、event.x-5、event.y-5、event.x+5、event.y+5)
def报告(自我、事件):#报告dot
打印(event.x,500 event.y)#500 event.y以反转y轴
self.canvas.coords(self.indicator,245245255255)#返回
root=tk.tk()
scale2d=scale2d(根)
root.mainloop()

您可以使用Canvas小部件拼凑一个。不过,这需要几十行。非常感谢,在我稍作修改后,它工作得非常好。如果这个答案有用,您可以通过单击复选标记来标记它。