Python OSX上充满多个空格字符的文本小部件的奇怪行为

Python OSX上充满多个空格字符的文本小部件的奇怪行为,python,macos,tkinter,Python,Macos,Tkinter,我正在开发一个类似记事本的应用程序,使用Python Tkinter创建GUI。文本小部件用作输入文本的区域。 我注意到的一件奇怪的事情是,当我在一行中输入多个空格字符时,比如说20,单击介于16和17空格字符之间的某个位置会将光标(以及小部件的索引属性)放置在第一个和第二个空格字符之间,而不是我单击的区域附近(请参阅下面截图的链接) 我向自己确认,这不是OSX的标准行为,打开TextEdit应用程序并在那里尝试相同的操作-一切正常-光标放在我单击的空格之间(而不是在行的开头) 此外,当在我

我正在开发一个类似记事本的应用程序,使用Python Tkinter创建GUI。文本小部件用作输入文本的区域。 我注意到的一件奇怪的事情是,当我在一行中输入多个空格字符时,比如说20,单击介于16和17空格字符之间的某个位置会将光标(以及小部件的索引属性)放置在第一个和第二个空格字符之间,而不是我单击的区域附近(请参阅下面截图的链接)

我向自己确认,这不是OSX的标准行为,打开TextEdit应用程序并在那里尝试相同的操作-一切正常-光标放在我单击的空格之间(而不是在行的开头)

此外,当在我的应用程序的文本小部件中插入空格以外的任何字符(例如点、字母等)时,一切正常

在Windows上运行完全相同的代码时,文本小部件的行为与预期的一样-光标正好出现在离我单击的位置最近的两个空格字符之间

有人知道在OSX上运行时如何“关闭此功能”吗? 提前谢谢

在此附上我的代码:

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。。。