tkinter: Unexpected behavior caused by Chinese input method
還沒有人認領這個 Issue。
- 主要語言
- Python
- 星號
- 77.2k
- 分支
- 35.9k
- PR 合併指標
- PR 指標待擷取
描述
Bug report
Bug description:
Entering "r", "t" or "p" in the Chinese input method and press Enter in the editor will cause IDLE to behave unexpectedly.
"r": Equivalent to pressing"F3"(will excute command "Find Selection")"t": Equivalent to pressing"F5"(will excute command "Run Module")"p": Equivalent to pressing"F1"(will open Python docs link)
There may be other similar situations, and I will list three of them here. The input method I used for my test is native to the Windows operating system.
I'm not sure if this problem is caused by the input method or the tkinter event binding, maybe it's not an idle issue, but a tkinter issue. If this issue is not resolved, it will greatly affect the experience of using input methods in IDLE.
The following is a gif demonstration that reproduces the issue:
The event when this behavior is triggered and some of its properties are as follows:
| letter | event.char |
event.keysym |
event.keycode |
event.keysym_num |
|---|---|---|---|---|
| r | "r" |
F3 | 114 | 65472 |
| t | "t" |
F5 | 116 | 65474 |
| p | "p" |
F1 | 112 | 65470 |
It is clear that this is not the expected behavior. event.keysym does not match event.char.
CPython versions tested on:
3.13
Operating systems tested on:
Windows
Linked PRs
- gh-125352
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
從 Windows 上 IDLE 編輯器的 tkinter 事件繫結開始,使用中文輸入法輸入 r、t 和 p 後按 Enter,以重現該行為。將 event.char 與 event.keysym、keycode 和 keysym_num 進行比較,並檢視相關的 PR gh-125352。當這些輸入不再意外觸發 F3、F5 或 F1 命令時,即表示完成。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- python
- 領域
- desktop
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 25/100