tkSimpledialog 在移位的数字键上记录错误的符号

tkSimpledialog recording wrong symbol on shifted number keys

我正在尝试使用 tkSimpledialog 接收密码作为更复杂的 GUI 的一部分,但是如果提供的密码包含从 6、7、8、9 或 0 键移出的符号,则错误符号记录在 tkSimpledialog 的输出中。如果我在命令行上使用 getpass.getpass() 进行类似的调用,则会记录正确的符号。

请注意,我使用的是英式键盘,因此生成的符号应该是:

6 - '^'
7 - '&' 
8 - '*'
9 - '('
0 - ')'

但我得到的是:

6 - '&'
7 - '*'
8 - '('
9 - ')'
0 - '=' 

所以看起来符号似乎在一个键上移动(这在 6-9 范围内是正确的),但是 0 键旁边是“-”,它的移动符号是“_”。

有什么想法吗?

简而言之,出现此问题是因为 Tk 认为用户使用的是德语键盘。用户在 Linux 系统中设置了默认键盘为德语的首选项,但是 linux 集群忽略了这一事实并强制键绑定为英国键盘。然而 Tk 似乎考虑了 Linux 中的偏好设置,尽管 python 忽略了它,尽管 getpass.getpass() 忽略了它。