如何将文本框放入python tkinter应用程序?

时间:2017-08-09 17:24:02

标签: python search tkinter textbox tkinter-entry

我已经查看了其他几个问题,但似乎没有一个问题对我的解决方案有帮助。我觉得我不是很聪明。

我知道的基本问题。我决定学习python,并且我正在用tkinter制作一个基本的应用程序来学习。

它基本上是一款存储和显示人员驾驶执照详情(姓名和有效期)的应用程序。我希望它拥有的能力之一是名称查找。首先,我需要弄清楚如何将文本框放入我的窗口!

我将在下面发布相关的(好的,我认为相关的!)代码:

class search(tk.Frame):


def __init__(self, parent, controller):
    tk.Frame.__init__(self, parent)
    label = tk.Label(self, text="Enter a name to display that individual's details", font=LARGE_FONT)
    label.pack(pady=10,padx=10)     

    label1 = tk.Label(console, text="Name:").pack()
    searchbox = tk.Entry(console)
    searchbox.pack()


    button1 = tk.Button(self, text="SEARCH", command=lambda: controller.show_frame(main))#not created yet
    button1.pack()

    button2 = tk.Button(self, text="HOME", command=lambda: controller.show_frame(main))
    button2.pack()

当然在顶部我有

import tkinter as tk

当我尝试运行这个时,我会得到" typeobject" search"没有属性''"。它运行正常 - 当我单击主窗口上的相关按钮时,搜索窗口将打开。直到我尝试添加条目框。

我在这里做错了什么?我是一个全新的人,所以我准备面对我的愚蠢

如果这个问题的格式很糟糕,我也很抱歉,我也是这里的新手。把一切都变成正确的#34;代码"格式是一种真正的痛苦

2 个答案:

答案 0 :(得分:0)

由于您没有指定布局管理器并通过console而不是self,我猜测您遇到了问题:

import tkinter as tk

class Search(tk.Frame):
    def __init__(self, parent=None, controller=None):
        tk.Frame.__init__(self, parent)

        self.pack()  # specify layout manager

        label1 = tk.Label(self, text="Enter a name to display that individual's details")
        label1.pack(pady=10, padx=10)

        label2 = tk.Label(self, text="Name:")
        label2.pack()

        searchbox = tk.Entry(self)
        searchbox.pack()

        button1 = tk.Button(self, text="SEARCH", command=lambda: controller.show_frame(main))
        button1.pack()

        button2 = tk.Button(self, text="HOME", command=lambda: controller.show_frame(main))
        button2.pack()

# Just cobble up the rest for example purposes:

main = None

class Controller:
    def show_frame(self, frame=None):
        pass

app = Search(controller=Controller())
app.mainloop()

答案 1 :(得分:-1)

首先,使用from tkinter import *是一种更有效的导入Tkinters库的方法,而无需在需要时导入特定的东西。要回答你的问题,这里是输入文本框的代码 t1 = Text(self)

要在文本框中插入文字:t1.insert()

这方面的一个例子是t1.insert(END, 'This is text')

如果你还没有得到它,t1是我分配给文本框的变量,尽管你可以选择你想要的任何变量。我强烈推荐tkinter上的effbots教程,我发现它非常有用。这是链接:http://effbot.org/tkinterbook/tkinter-application-windows.htm

祝你好运!