1

我有一个让我烦恼的问题。我目前正在构建一个带有 Tkinter GUI 的小应用程序。

在首页,我想要一些介绍性文字,无论是文本还是滚动文本小部件。我遇到的代码示例使用诸如 INSERT、CURRENT 和 END 之类的关键字在小部件内进行索引。

我已经将以下代码复制粘贴到我的编辑器中,但它无法识别 INSERT(抛出错误:“NameError: name 'INSERT' is not defined”):

import tkinter as tk
from tkinter import scrolledtext

window = tk.Tk()
window.title("test of scrolledtext and INSERT method")
window.geometry('350x200')

txt = scrolledtext.ScrolledText(window,width=40,height=10)
txt.insert(INSERT,'You text goes here')
txt.grid(column=0,row=0)

window.mainloop()

如果我将 [INSERT] 更改为 [1.0],我可以让代码工作,但我无法让 INSERT 工作非常令人沮丧,正如我在遇到的每个示例代码中看到的那样

4

3 回答 3

3

使用tk.INSERT而不是仅INSERT. 显示了完整的代码。

import tkinter as tk
from tkinter import scrolledtext

window = tk.Tk()
window.title("test of scrolledtext and INSERT method")
window.geometry('350x200')

txt = scrolledtext.ScrolledText(window,width=40,height=10)
txt.insert(tk.INSERT,'You text goes here')
txt.grid(column=0,row=0)

window.mainloop() 
于 2020-03-30T09:54:45.407 回答
1

INSERT不能直接使用。

您过去可以使用它,只是因为您过去使用过它:

from tkinter import * # this is not a good practice

INSERTCURRENT并且ENDtkinter.constants。现在在你的代码中,你甚至没有导入它们。

如果你想使用它们,你可以使用

from tkinter.constants import * # not recommended

...
txt.insert(INSERT,'You text goes here')

或者

from tkinter import constants

...
txt.insert(constants.INSERT,'You text goes here') # recommend

如果不想导入它们,您也可以使用:

txt.insert("insert",'You text goes here')

编辑:我在 tkinter 的源代码中发现,它已经导入它们,重新启动的答案也可以。

于 2020-03-30T09:43:23.497 回答
1

您不需要使用 tkinter 常量。我个人认为最好使用原始字符串“insert”、“end”等。它们更灵活。

但是,常量对您不起作用的原因是您没有直接导入它们。您导入 tkinter 的方式,您需要使用tk.INSERT等。

于 2020-03-30T15:03:26.790 回答