Python - 基础知识 - 如何为一组简单的基于数学的变量制作一个 'class('?) 函数



我正在尝试使用 Tkinter 库编写一个基本的绘图小部件。

我现在使用的最基本的代码是:

from Tkinter import *
master = Tk()
w = Canvas(master, width=1200, height=800)
w_centre = 600
h_centre = 400
w.pack()
w.create_oval(w_centre-50, h_centre-50, w_centre+50, h_centre+50)
mainloop()

真正想做的是从 3 个变量开始,x,y(圆心(和大小。从那里,我可以使用简单的数学来计算出制作圆(http://docs.huihoo.com/tkinter/tkinter-reference-a-gui-for-python/create_oval.html(所需的(x0,y0,x1,y1(集合

我想以编程方式做到这一点,通过将大小作为数据集中的值输入,并将 x,y 作为相关值(如果我需要 1 个圆圈,我会使用 x1,y1 如果我需要两个圆圈,它们将是 x2,y2 和 x3,y3 等(。目的是尝试为我拥有的数据集构建一个基本的可视化工具。我想我可以编写一个 x,y 坐标数组,我可以根据需要查找这些坐标,并且由于大小值将从列表中提取 - 所以最好编写一个函数来获取大小,根据需要查找 x,y 并输入create_circle调用适当的值。

我知道我需要用 x0,y0,x1,y1 值调用 create_oval 函数,我想知道是否有一种方法可以调用另一个函数,允许我每次通过递给它 x,y(圆心(和大小(半径(值来制作这些值,并为它返回相关的 x0,y0,x1,y1 值。

由于这是一个可重用的数学片段,我想我需要创建一个类,但我找不到一个教程来帮助我理解如何定义类函数,然后在每次需要时调用它。

我很感激我可能没有很好地措辞,我正在尝试自己学习基本的 python(没有 CS 背景(,所以如果我命名错误或错过了重要的东西,请原谅我。

有人可以给我一个提示或一个指向体面的回报的指针吗?

Python 允许你从函数返回任何类型的对象;特别是,你可以返回create_oval所需的元组(x0,y0,x,1,y1)

def enclosing_box(x, y, radius):
    """Given the coordinates of the circle center and its radius, return the top-left and bottom-right coordinates of the enclosing box."""
    return (x-radius, y-radius, x+radius, y+radius)

然后,您可以使用 *args 语法调用具有一组取自序列(列表、元组等(的参数的函数。 您可以使用它通过以下方式调用create_oval

coords = enclosing_box(x,y,radius)
w.create_oval(*coords)

最新更新