VScode 使用 turtle.onkey() 時讀不到鍵盤輸入

(大家新年快樂~希望沒有發錯板問問題)

問題

我目前進度到 Day19 中, 要使用 turtle.onkey() 時發生讀不到鍵盤輸入的問題, 我使用的是 VScode , 希望也有使用 非IDE 的大大可以幫我測試看看或是提點一下問題可能是哪些原因造成


說明

簡單測試下面此段程式碼可以順利進行:

click to expand!
from turtle import Screen, Turtle

screen = Screen()
turtle = Turtle()

def test():
    turtle.forward(100)

screen.onkey(test,"Up")

screen.listen()
turtle.forward(100)

screen.mainloop()

但是一旦改變 key 值,

例如改成偵測 space 鍵 : screen.onkey(test,"space"),

或是其他鍵盤輸入 : screen.onkey(test,"a") 後都沒有反應,

只有上下左右鍵有反應, 但是在 repl.it 上都是可以正常執行的, 網路上找不太到解決方法QQ

個人目前猜測可能跟我當初下載 turtle 相關套件有關係, 最一開始執行 turtle 相關程式時錯誤訊息顯示缺少 tkinter 套件, 所以我下了下面那個命令下載 tkinter 後就可以正常運作, 只是單獨 turtle.onkey() 會有問題, 希望大家幫忙一下, 謝謝大家QAQ

sudo apt install python3-tk 

執行環境為:

  • Ubuntu: 20.04
  • Python3: 3.8.5
  • tkinter: 8.6
1個讚

有沒有任何錯誤訊息?
可以先重裝套件,或換個乾淨環境試試

1個讚

沒有錯誤訊息, 有重裝過套件甚至整個系統都重裝過了XD 想問您也是使用 vscode 然後有成功嗎?

雖然進度還沒到,不過測試了一下不管是 “space” 或 “a” 都可以使用,我沒有安裝 tkinter 套件。
最近比較忙,改天用Ubuntu測試看看。

執行環境:

  • Windows 10
  • Visual Studio code 1.53.2
  • Python 3.8.7

1個讚

可以請問一下當初有下載額外套件嗎? 還是您不用額外下載套件就可以 import turtle 了呢?

你有預設輸入法嗎?

如果不是預設輸入法搞鬼,那用pynput抓鍵盤事件看看,應該要能像這樣讀到鍵盤輸入

官方範例程式

1個讚

是的,沒有額外下載套件,不過仔細想想我的python是用anaconda裝的,查了一下預設套件 Packages for 64-bit Windows with Python 3.8 — Anaconda documentation ,應該是沒有裝你提到那些套件。

試著開啟輸入法來測試。

  • 中文情況下
  1. a會讓視窗左上出現ㄇ但是可以正常操作。
  2. 但是space會出現以下情況。

1個讚

剛剛測試了一下發現鍵盤都可以抓到, 輸入法的部份我有注意要切換成英文, 也有考慮大小寫的問題但還是都不行

如上述有測試過中文以及英文大小寫都有分別測試但是都沒有反應, 那這樣看下來應該是套件導致的結果了QQ

你有先update嗎

sudo apt-get update
sudo apt install python3-tk

不確定有沒有所以我剛剛 remove 後再重裝了, 還是不行動QQ

那在這個test method裡面,print某些訊息,確認turtle有收到事件?

有的, 之前我也這樣測試過, 但是結果是什麼東西都沒有輸出出來