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

2024-04-19 04:10:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

1. Proof that a row of space characters is entered in the Text widget

2. Cursor is placed after the 1st character of the line after clicking between further characters

我向自己确认,这不是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()

Tags: ofthetextin文本应用程序for部件