我正在开发一个简单的python程序,它涉及创建一个圆圈“按钮”,然后让用户在圆圈内点击。如果他们没有点击圈子,则会显示一条消息,指出他们已在圈子外点击并应再次尝试。然而,在最后一部分,我在代码上得到了无限循环,尽管使用了休息。有没有人可以帮助看看是否有错误?谢谢!
r = 75
while True:
# to determine if click is within circle
length = math.sqrt(((x-100)**2) +((y-250)**2))
if length == r or length < r:
break
# prints if user does not click within the range
print("Please click within the spin button")
答案 0 :(得分:1)
x
和y
永远不会在while
循环内更新,因此如果它们在第一次迭代中不在您的圈子中,length
将始终保持不变值(大于r
),永远不会执行break
语句。
另外,使用if length >= r:
。无需单独检查这两个条件。 (从逻辑上讲,它应该是if length > r:
,因为点击圆圈的边缘仍应计算在内。)
答案 1 :(得分:0)
如果你想对点击做出反应,你通常会使用某种GUI框架,TKinter,GTK,QT,类似的东西或者PythonCard的包装。使用is,您可以将事件(例如单击元素)连接到应包含代码的方法。这样代码不会在循环中运行,而是仅在单击发生时运行。 实际代码很大程度上取决于您选择的GUI框架,但您没有提供任何相关信息。
答案 2 :(得分:-1)
r = 75
while True:
# to determine if click is within circle
length = math.sqrt(((x-100)**2) +((y-250)**2))
if length == r or length < r:
break
else:
# prints if user does not click within the range
print("Please click within the spin button")
您的代码是正确的只需要其他声明。 if语句为false时运行else语句。 所以这里假设如果语句正确则代码会中断,但是当if语句为false时,代码将转到else语句并打印出来请在旋转按钮内单击。
谢谢。