如何在python中为随机形状生成随机坐标

时间:2014-12-15 09:53:34

标签: python tkinter

这是程序的代码我试图获取随机坐标以绘制随机形状现在随机颜色有效但是当我运行程序时我得到这个错误:

(Traceback (most recent call last):
  File "/home/04danielbrew/Desktop/Python/Random Coloured Square.py", line 9, in <module>
    randomh=random.randint(1,1080)
AttributeError: 'builtin_function_or_method' object has no attribute 'randint)

提前感谢,我不想要最先进的代码,因为我只做GCSE计算机科学。

from tkinter import*
from random import*
####Set veriables
colors=["mintcream","orangered","gold","coral","red", "orange", "yellow", "green", "blue","violet","midnightblue"]
canvas_height=1080
canvas_width=1920
canvas_colour='black'
line_width=1
randomh=random.randint(1,1080)
randomw=random.randint(1,1920)
randomh2=random.randint(1,1080)
randomw2=random.randint(1,1920)
####Define function
def square(self):
     canvas.create_line(randomh,randomw,randomh2,randomw2, width=line_width,          fill=random.choice(colors))
     canvas.create_line(300,100,400,100, width=line_width, fill=random.choice(colors))
     canvas.create_line(400,100,400,200, width=line_width, fill=random.choice(colors))
     canvas.create_line(400,200,300,200, width=line_width, fill=random.choice(colors))
###Main program
window=Tk()
window.title("Daniel Random Amazballs lines")
canvas=Canvas(bg=canvas_colour,height=canvas_height,width=canvas_width, highlightthickness=0)
canvas.pack()
###Click in window to start
window.bind("<Button-1>",square)
window.mainloop()

2 个答案:

答案 0 :(得分:3)

作为最佳做法,对于Pythonic代码,请不要from <module> import *

在这种情况下,您可以使用from random import randint, choice代替。

然后,您的来电将类似于:randomh = randint(1,1080)choice(colors)

重点是from <module> import *几乎总是错误的方式 - 它会使用<module>中的所有内容来污染您的顶级命名空间。

Explicit is better than implicit

这不是关于高级代码,而是关于学习编写明确表达您意图的代码。

答案 1 :(得分:1)

由于您要从随机导入所有内容,因此无需调用random.randint(),您只需直接调用randint()。

像这样:

randomh = randint(1,1080)
randomw = randint(1,1920)
randomh2 = randint(1,1080)
randomw2 = randint(1,1920)

正如gomad所说,从模块中导入所有东西并不是一个好习惯,特别是如果你只使用一种方法。

此外,随机应该只用于导入。 看到差异:

import random
random.choice([1,2,3,4])

from random import choice
choice([1,2,3,4])

第一个是清楚它正在做什么,它在数组中选择一个元素。 虽然第二个不清楚,它是否选择了阵列?它是否向用户提供选择?