尝试将TK文本窗口添加到示例,导入tkinter混淆

时间:2017-10-12 16:04:55

标签: python tkinter

我一直在使用几个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()

3 个答案:

答案 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")