我一直在使用几个tkinter教程,包括一个带有Text窗口和一个非常有用的教程但没有文本窗口。见这里:https://www.youtube.com/watch?v=oV68QJJUXTU
我试图在此示例中添加一个Text窗口,但发现未定义常量END并且Text窗口未打开或显示在框架中。我追溯到导入的差异。使用“from tkinter import *”定义了常量END(它是'end')但是使用本教程的方法,“import tkinter as tk”没有定义常量END。我定义它以清除错误当我尝试使用文本窗口窗口永远不会打开(从不显示)在示例中所以我认为要么我必须重写使用import *方法或者我需要了解如何过来导入为tk差异。
它认为导入为tk可能是更正确的方法而不是*因此我觉得我应该学会这样做。
有任何建议吗?
此代码有效
from tkinter import *
.....
class set_window(Thread):
def __init__(self, labelText):
Thread.__init__(self)
self.labelText = labelText
self.labelText.set("Text Window Display")
self.T = Text(root, height=40, width=60, bd=10)
self.T.grid(row=1, column=0)
self.T.focus_set()
self.T.insert(END, "Just a text Widget\nin two lines\n")
但这不是:
import tkinter as tk
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Blast it!", font=XLARGE_FONT)
label.pack(pady=10, padx=10)
label_2 = tk.Label(self, text="Input Text Here", font=LARGE_FONT)
label_2.pack(pady=10, padx=10)
self.T = tk.Text(self, height=40, width=60, bd=10)
# print(type(END))
# input ("Press Enter")
self.T.insert(END, "Just a text Widget\nin two lines\n")
self.T.insert('end', "Just a text Widget\nin two lines\n")
self.T.focus_set()
答案 0 :(得分:1)
如果您要访问END
时可用的from tkinter import *
,则必须在执行tk.END
时以import tkinter as tk
的身份访问该'end'
。或者,您只需使用from tkinter.constants import END
即可。另一种解决方案是local.project.com
。
答案 1 :(得分:0)
我发现我必须将END常量作为tk.END加前缀,并在出错时清除。
我发现我必须在Text window insert语句之后添加一个PACK语句。页面代码变为:
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Blast it!", font=XLARGE_FONT)
label.pack(pady=10, padx=10)
label_2 = tk.Label(self, text="Input Text Here", font=LARGE_FONT)
label_2.pack(pady=10, padx=10)
self.T = tk.Text(self, height=40, width=60, bd=10)
self.T.insert(tk.END, "Just a text Widget\nin two lines\n")
self.T.focus_set()
self.T.pack()
答案 2 :(得分:0)
使用“ end”代替END
from tkinter import *
self.T.insert("end", "Just a text Widget\nin two lines\n")