【发布时间】:2019-04-01 14:51:05
【问题描述】:
我正在尝试使用 python 3 和 tkinter 创建一个文本编辑器。文本编辑器非常好用,除了我尝试使用键盘快捷键时。每当我使用任何快捷方式时,都会收到一条错误消息:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 1699, in __call__
return self.func(*args)
TypeError: newFile() takes 0 positional arguments but 1 was given
newFile() 可以替换为copySelected()、selectAll() 或我尝试使用的任何命令。这仅在我尝试使用键绑定时发生。它在菜单栏中工作得很好。奇怪的是,当我剪切、复制或粘贴时,我得到了错误,它们实际上在应用程序中工作。这是键绑定代码:
textField.bind("<Command-n>", newFile)
textField.bind("<Command-N>", newFile)
textField.bind("<Command-o>", openFile)
textField.bind("<Command-O>", openFile)
textField.bind("<Command-s>", saveFile)
textField.bind("<Command-S>", saveFile)
textField.bind("<Command-n>", newFile)
textField.bind("<Command-n>", newFile)
textField.bind("<Command-z>", undo)
textField.bind("<Command-Z>", undo)
textField.bind("<Command-Shift-z>", redo)
textField.bind("<Command-Shift-Z>", redo)
textField.bind("<Command-x>", cutSelected)
textField.bind("<Command-X>", cutSelected)
textField.bind("<Command-c>", copySelected)
textField.bind("<Command-C>", copySelected)
textField.bind("<Command-v>", paste)
textField.bind("<Command-V>", paste)
textField.bind("<Command-a>", selectAll)
textField.bind("<Command-A>", selectAll)
我目前正在 Mac OS 上测试代码,但我已经制作了特定于操作系统的代码,以便它也可以在 Windows 和 Linux 上运行。 Windows 和 Linux 代码除了 Command 替换为 Control 之外完全相同。错误发生在所有三个平台上。
非常感谢任何帮助。谢谢!
【问题讨论】:
标签: linux python-3.x windows macos tkinter