- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望,如果用户连续调用两个函数,两个函数之间应该有某种类型的“延迟”,以便在执行第一个调用的函数时不会中断按键。也许像队列这样的东西就可以了。为了形象化我所说的内容,以下是我要调用的函数,这些函数根据按键,在 turtle 图形窗口中绘制其相应的字母:
def draw_H():
# Draw the left leg of H.
# The turtle starts at the bottom left of the letter, pointing right.
left(90)
forward(letter_height)
# Draw the bar of the H.
# The turtle starts at the top of the left leg, pointing up.
forward(-letter_height/2)
right(90)
forward(letter_width)
# Draw the right leg of the H.
# The turtle starts at the right side of the bar, pointing right.
left(90)
forward(letter_height/2)
forward(-letter_height)
right(90)
# The H is drawn.
# The turtle is in the top right, pointing right.
draw_space()
def draw_E():
# Draw an E.
left(90)
forward(letter_height)
right(90)
forward(letter_width)
forward(-letter_width)
right(90)
forward(letter_height/2)
left(90)
forward(letter_width)
forward(-letter_width)
right(90)
forward(letter_height/2)
left(90)
forward(letter_width)
draw_space()
def draw_L():
# Draw an L
left(90)
forward(letter_height)
forward(-letter_height)
right(90)
forward(letter_width)
draw_space()
def draw_O():
# Draw an O
forward(letter_width)
left(90)
forward(letter_height)
left(90)
forward(letter_width)
left(90)
forward(letter_height)
left(90)
forward(letter_width)
draw_space()
def draw_W():
# This function will draw a W
left(105)
forward(letter_height)
backward(letter_height)
right(40)
forward(letter_height/2)
right(131)
forward(letter_height/2)
left(141)
forward(letter_height)
right(165)
penup()
forward(letter_height)
left(90)
draw_space()
def draw_R(letter_width, letter_height):
# This function will draw an R
slant_height = (math.sqrt(letter_width**2 + (letter_height/2)**2))
slant_angle = (90+(90-(math.degrees(math.acos(letter_width/slant_height)))))
space_angle = (180 - slant_angle)
left(90)
forward(letter_height)
right(90)
forward(letter_width)
right(90)
forward(letter_height/2)
right(90)
forward(letter_width)
left(slant_angle)
forward(slant_height)
left(space_angle)
draw_space()
def draw_D(letter_width, letter_height):
# This function will draw a REAL D
angle_height = math.sqrt(letter_width**2 + (letter_height/2)**2)
D_angle = (90+(math.degrees(math.acos(letter_width/angle_height))))
Second_D_angle = ((90 - (D_angle-90)) + (90-(math.degrees(math.acos(letter_width/angle_height)))))
D_space_angle = (math.degrees(math.atan(letter_width/(letter_height/2))))
left(90)
forward(letter_height)
right(D_angle)
forward(angle_height)
right(Second_D_angle)
forward(angle_height)
left(90+D_space_angle)
penup()
forward(letter_width)
draw_space()
以下是如何调用函数来绘制相应的字母:
onkey(draw_H, "h")
onkey(draw_E, "e")
onkey(draw_L, "l")
onkey(draw_O, "o")
onkey(draw_W, "w")
onkey(lambda: draw_R(letter_width, letter_height), "r")
onkey(lambda: draw_D(letter_width, letter_height), "d")
现在发生的情况是,当调用该函数并且用户重复按住/按下相应函数的同一键时,会发生这种情况:
^这就是当我按住调用 H 的键时发生的情况。另外:
^这就是我快速连续输入 R 和 H 时发生的情况。我希望在调用这些函数和激活它们之间有一点延迟,这样每个函数都能够完成其过程,并且 turtle 不会到处发疯。非常感谢有关此问题的任何帮助! :)
最佳答案
欢迎来到事件编程的世界!
让我们暂时忘记 turtle 吧。您希望您的程序在键盘上敲击某些字符时绘制绘图。但是,当您正在绘制某些内容时,您不希望点击另一个角色来开始新的绘制。因此,如果一个绘图程序处于事件状态,您希望它不要进入新的绘图程序。您只需要一点同步。
由于所有操作都发生在同一个线程中(无论如何,如果不同的线程尝试访问屏幕,大多数 GUI 都会表现得很糟糕),因此您实际上应该使用队列来保存绘图请求,并且如果您已经在绘图,则只需将请求排队即可:
q = Queue.Queue()
drawing = False
drawingLock = threading.Lock()
def draw(x):
global drawing
q.put(x)
process = False:
drawingLock.acquire()
if not drawing:
process = True
drawing = True
drawingLock.release()
if process:
while not q.empty():
do_draw(q.get()) # call the actual drawings here
drawingLock.acquire()
drawing = False
drawingLock.release()
应该从 onclick 事件调用此 draw
函数,并将绘图分派(dispatch)到实际的绘图函数。
关于python - 在两个连续执行的函数之间添加延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34247458/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!