我的函数在tkinter中产生了一个新行,不知道为什么

2024-04-26 18:28:31 发布

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

我正在编写一个tkinter程序,由于某种原因[我有一个绑定到control-O的函数]当我使用它时,它会创建一个新行。函数如下:

def fileOpen(textView):
    try:
        global currentText
        global currentName
        global currentTempName
        myfile = tkFileDialog.askopenfile(title='Open a file', mode='r')
        text.delete('1.0', END)
        loadedfile = myfile.read()
        currentText = loadedfile
        currentFile = myfile.name
        currentName = currentFile
        currentName = currentName.rsplit('/', 1)[-1] #get the 'name.ext' part only
        currentName = currentName.rsplit('\\', 1)[-1] #incase you're usin windows
        currentTempName = currentName
        currentFileButton.config(text = currentName)
        myfile.close()
        textView.insert("end", loadedfile)
    except:
        return

这里是装订的地方:

def ctrlO(arg):
    fileOpen(text)

以及实际约束力:

root.bind("<Control-o>", ctrlO)

[我使用的是文本小部件,绑定到它并不能解决问题]

为了更好地解释这个问题,当我按ctrl+o打开openfile对话框时,它会创建一个新行,就像我按Enter一样,但只在文件的末尾。我可以提供更多的代码,如果需要的话,但这些是唯一的地方,这些是在使用。你知道吗

谢谢

(我意识到这个功能很混乱)

编辑:这并没有真正影响程序,因为我清除了文字之间的开口,但它只是有点烦人,我相信很容易修复。你知道吗


Tags: 函数textname程序defmyfileglobaltextview
1条回答
网友
1楼 · 发布于 2024-04-26 18:28:31

这是文本小部件中Control-O的正常行为;即使您根本没有键绑定,也会发生这种情况。要覆盖它,需要在事件处理程序中return "break",以防止事件进一步传播。我非常确定,您必须直接绑定到文本小部件才能在内置行为之前激活它。您可能仍然需要根小部件上的绑定,这样即使用户从未单击文本字段以使其具有键盘焦点,该命令也可以工作。你知道吗

相关问题 更多 >