Python OSX上充满多个空格字符的文本小部件的奇怪行为
我正在开发一个类似记事本的应用程序,使用Python Tkinter创建GUI。文本小部件用作输入文本的区域。 我注意到的一件奇怪的事情是,当我在一行中输入多个空格字符时,比如说20,单击介于16和17空格字符之间的某个位置会将光标(以及小部件的索引属性)放置在第一个和第二个空格字符之间,而不是我单击的区域附近(请参阅下面截图的链接) 我向自己确认,这不是OSX的标准行为,打开TextEdit应用程序并在那里尝试相同的操作-一切正常-光标放在我单击的空格之间(而不是在行的开头) 此外,当在我的应用程序的文本小部件中插入空格以外的任何字符(例如点、字母等)时,一切正常 在Windows上运行完全相同的代码时,文本小部件的行为与预期的一样-光标正好出现在离我单击的位置最近的两个空格字符之间 有人知道在OSX上运行时如何“关闭此功能”吗? 提前谢谢 在此附上我的代码:Python OSX上充满多个空格字符的文本小部件的奇怪行为,python,macos,tkinter,Python,Macos,Tkinter,我正在开发一个类似记事本的应用程序,使用Python Tkinter创建GUI。文本小部件用作输入文本的区域。 我注意到的一件奇怪的事情是,当我在一行中输入多个空格字符时,比如说20,单击介于16和17空格字符之间的某个位置会将光标(以及小部件的索引属性)放置在第一个和第二个空格字符之间,而不是我单击的区域附近(请参阅下面截图的链接) 我向自己确认,这不是OSX的标准行为,打开TextEdit应用程序并在那里尝试相同的操作-一切正常-光标放在我单击的空格之间(而不是在行的开头) 此外,当在我
from Tkinter import *
# Functions
def quitApplication():
'''Quit application the right way'''
mainWindow.destroy()
def createNewEmptyArea(width, height):
'''Create area of empty spaces'''
for y in range(height):
for x in range(width):
mainTextField.insert(END, " ")
mainTextField.insert(END, "\n")
# Create main window
mainWindow = Tk()
mainWindow.protocol('WM_DELETE_WINDOW', quitApplication)
# Main panel for text widget:
mainPanel = Frame(mainWindow, bd=2, relief=SUNKEN)
mainPanel.pack(fill=BOTH, expand=1)
# Text
mainTextField = Text(mainPanel, wrap=NONE)
mainTextField.pack(side=LEFT, fill=BOTH, expand=1)
# Fill text widget with 100 rows of space characters with 100 spaces characters in each row
createNewEmptyArea(100, 100)
# Run (loop) main window
mainWindow.mainloop()
是否可以访问该应用程序,以便我们也可以尝试它?无论如何,我刚刚注意到,我的IDLE编辑器也会出现这种奇怪的行为(我使用的是OS X),尽管,很明显,从你所说的来看,你的IDLE编辑器并没有这样做。@nbro我已经将我运行的源代码附加到了主帖子上。我还没有尝试过IDLE编辑器(顺便说一句,它不是基于Tkinter本身吗?),我在TextEdit应用程序上执行了测试(我想这是OS X上的默认设置)没有问题。正如我在之前的评论中所说的,我认为这是一个你无法避免的问题,因为我前面提到的原因,但也有可能解决它。很抱歉,我知道你用空闲时间测试了它,但你在另一个编辑器中检查了这种行为的存在。恐怕真的是因为tkinter。。。