python - 如何使用turtle更改python onclick的背景颜色?
问题描述
我一直在尝试使用海龟在后台每次单击时触发这些颜色。如果有人可以帮助我提前感谢您的回复,那就太好了!
import turtle
import random
f = turtle.pen()
BG=turtle.Screen()
colors = ['blue', 'red', 'yellow', 'green']
BG.bgcolor("black")
richard.pencolor("orange")
richard.penup()
def draw(x,y):
richard.goto(x,y)
richard.pendown()
for x in range(360):
richard.forward(200)
richard.left(108)
richard.forward(205)
richard.left(108)
richard.forward(210)
richard.left(108)
richard.forward(215)
richard.left(1)
richard.forward(220)
richard.left(108)
richard.forward(225)
richard.left(108)
richard.tilt(20)
richard.speed(90)
richard.pencolor()
richard.pencolor(random.choice(colors))
richard.bgcolor()
richard.bgcolor(random.choice(colors))
if(x % 2 ==1):
richard.bgcolor(random.choice(colors))
if(x % 2 ==1):
richard.pencolor(random.choice(colors))
richard.penup()
BG.onclick(draw())
解决方案
您的主要问题是这一行:
BG.onclick(draw())
我们需要将draw
函数本身传递给onclick()
,而不是返回的None
那个draw()
:
BG.onclick(draw)
单击窗口时仅更改背景颜色的简单示例:
from turtle import Screen, Turtle
from random import choice
COLORS = ['blue', 'red', 'yellow', 'green']
screen = Screen()
screen.bgcolor("black")
def draw(x, y):
color = choice(COLORS)
while color == screen.bgcolor(): # don't use same color twice in a row
color = choice(COLORS)
screen.bgcolor(color)
screen.onclick(draw)
screen.mainloop()
推荐阅读
- powershell - 数组中的包含比较不起作用
- android - Serivce、WorkManger 和 JobScheduler 之间的差异
- c# - 将 Observable 对象集合绑定到 RadTreeListView
- css - CSS 和 img 不要在 Github 上阅读
- django - Django Auth:如何创建多对多关系模型?
- odoo - Odoo 12 - 类型错误:create() 缺少 1 个必需的位置参数:'vals'
- xamarin - 当 CrossSimpleAudioPlayer 播放时,WkWebView 暂时禁用
- firebase - 我正在使用流提供程序和 Navigator.push(),如何检测新路由中流的更改
- python - “ctypes\__init__.py”,第 364 行,在 __init__ OSError: [WinError 126] The specified module could not be found While running pyinstaller executable
- python - how to slice data frame by row number and aggregate in pandas