【发布时间】:2021-06-30 08:19:57
【问题描述】:
'''
from sys import exit
from turtle import *
from math import sqrt, cos, radians
def tria():
seth(180)
fd(radius*sqrt(3))
lt(120)
fd(radius *sqrt(3))
lt(120)
fd(radius * sqrt(3))
seth(120)
circle(radius)
seth(0)
def rect():
seth(0)
fd(radius * sqrt(2))
rt(90)
fd(radius * sqrt(2))
rt(90)
fd(radius * sqrt(2))
rt(90)
fd(radius * sqrt(2))
seth(0)
def penta():
seth(-36)
fd(cos(radians(54))*radius*2)
rt(72)
fd(cos(radians(54))*radius*2)
rt(72)
fd(cos(radians(54))*radius*2)
rt(72)
fd(cos(radians(54))*radius*2)
rt(72)
fd(cos(radians(54))*radius*2)
seth(180)
def hexa():
seth(-30)
fd(radius)
rt(60)
fd(radius)
rt(60)
fd(radius)
rt(60)
fd(radius)
rt(60)
fd(radius)
rt(60)
fd(radius)
seth(180)
radius = float(input("Write the radius "))
screen = getscreen()
shape('turtle')
speed(5)
screen.onkeypress(tria,"3")
screen.onkeypress(reset,"r")
screen.onkeypress(exit,"q")
screen.onkeypress(exit,"q")
if (screen.onkeypress(None,'4')):
rect()
if (screen.onkeypress(None,'o')):
seth(120)
circle(radius)
seth(0)
screen.listen()
screen.mainloop()
'''
错误:jinhojeon@jinui-MacBookAir jinhojeon % python polygons2.py 写半径 100 2021-06-30 18:10:06.982 python[10480:325389] TSM AdjustCapsLockLEDForKeyTransitionHandling - _ISSetPhysicalKeyboardCapsLockLED 禁止 Tkinter 回调异常
Q:想分离两个动作,绘制多边形,绘制外圆,使用onkeypress。就像,按'4',绘制矩形,然后按'o',绘制它的外圆。如果它在 onkeypress 中不起作用,我希望你能告诉我。
问题:在 Mac os 中,不知道如何在 python 中调用按键的 str 或 ascii。即使我可以"if ~~ == 'o': onkeypress(outer_rect,'o'),我也不知道它是否有效。
据我所知,onkeypress 函数旨在在读取适当的键时做“有趣”。我之前用谷歌搜索过,但是“msvcrt”在 Mac 中不起作用。任何人都知道如何使用 mac 在 python 中将按键作为 str 或 ascii 或如何将它们很好地分开。如果您能与我分享您的知识,我将不胜感激。
如果我的话含糊不清,我真的很感谢你指出哪些是含糊的。
我的解决方案如下。我注意到矩形的外圆和其他圆是不同的。 如何更改代码,例如 if press '4' -> press 'o'(outercircle) -> if not -> get back to the loop -> ? :期望按下相同的按钮“o”,但输出不同
from sys import exit
from turtle import *
from math import sqrt, cos, radians
def tria():
speed(6)
seth(180)
fd(radius*sqrt(3))
lt(120)
fd(radius *sqrt(3))
lt(120)
fd(radius * sqrt(3))
seth(120)
def rect():
speed(6)
seth(0)
fd(radius * sqrt(2))
rt(90)
fd(radius * sqrt(2))
rt(90)
fd(radius * sqrt(2))
rt(90)
fd(radius * sqrt(2))
seth(0)
def penta():
speed(6)
seth(-36)
fd(cos(radians(54))*radius*2)
rt(72)
fd(cos(radians(54))*radius*2)
rt(72)
fd(cos(radians(54))*radius*2)
rt(72)
fd(cos(radians(54))*radius*2)
rt(72)
fd(cos(radians(54))*radius*2)
seth(180)
def hexa():
speed(6)
seth(-30)
fd(radius)
rt(60)
fd(radius)
rt(60)
fd(radius)
rt(60)
fd(radius)
rt(60)
fd(radius)
rt(60)
fd(radius)
seth(180)
def one():
speed(6)
seth(225)
circle(radius)
seth(0)
def outercircle():
speed(6)
circle(radius)
seth(0)
radius = float(input("Write the radius "))
screen = getscreen()
shape('turtle')
speed(6)
screen.listen()
screen.onkeypress(reset,"r")
screen.onkeypress(exit,"q")
screen.onkeypress(tria,"3")
screen.onkeypress(rect,'4')
screen.onkeypress(penta,'5')
screen.onkeypress(hexa,'6')
screen.onkeypress(one,'o')
screen.onkeypress(outercircle,'C')
screen.mainloop()
【问题讨论】:
标签: key-value turtle-graphics getchar python-turtle