目录
最近在完成《计算机图形学基础》3.4.2的作业,要求是使用键盘上的P键绘制线段。
书上写的是先写一个键盘输入注册函数(下面为错误代码)
def pressKey(key: str, x: int, y: int) -> None:
"""
监听键盘操作
:param key: 按下哪个按键
:param x: 光标横坐标
:param y: 光标纵坐标
:return:
"""
if key == 'p':
global iPointNum
if iPointNum == 0 or iPointNum == 2: # 要么没有顶点,要么两个顶点都有,这时候需要重新绘制直线
# 确定直线的第一个端点
iPointNum = 1
points[0].x = x
points[0].y = winHeight - y
else:
# 确定直线的第二个端点
iPointNum = 2
points[1].x = x
points[1].y = winHeight - y
glutPostRedisplay() # 指定窗口重新绘制
再在主函数中添加(吐槽一下,书上把glutKeyboardFunc函数名给打错了,无语子):
glutKeyboardFunc(pressKey) # 指定键盘回调函数
然而运行后无法实现相应功能……
参考python - PyOpenGL Taking keyboard input - Stack Overflow
把
if key == 'p':
改成
if key == b'p':
即可