在Python 3.2中使用tkinter捕获输入

在Python 3.2中使用tkinter捕获输入,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我们的库存系统根据一种模式生成10位数的商品编号。我编写了一个程序,将执行以下操作: 取一个数字不正确的10位项目编号,通过更改每个数字返回可能有效项目编号的列表 取一个缺少数字的9位项目编号,通过插入数字返回一个有效的10位项目编号列表 获取具有额外数字的11位项目编号,并通过删除数字返回有效的10位项目编号列表 取一个10位数的项目编号,将2位数字转换,然后通过切换数字返回有效的10位数项目编号列表 我有5个功能来完成这项任务。用于上述每个实例的函数,然后是确定项目编号是否有效的函数。这一切

我们的库存系统根据一种模式生成10位数的商品编号。我编写了一个程序,将执行以下操作:

  • 取一个数字不正确的10位项目编号,通过更改每个数字返回可能有效项目编号的列表
  • 取一个缺少数字的9位项目编号,通过插入数字返回一个有效的10位项目编号列表
  • 获取具有额外数字的11位项目编号,并通过删除数字返回有效的10位项目编号列表
  • 取一个10位数的项目编号,将2位数字转换,然后通过切换数字返回有效的10位数项目编号列表
  • 我有5个功能来完成这项任务。用于上述每个实例的函数,然后是确定项目编号是否有效的函数。这一切都正常工作

    现在,我想用一个GUI启动这个程序,该GUI显示上述4个选项以及一个退出选项。因此,清单1-5中的菜单供用户选择。一旦用户输入他们想要的选项编号1到5,我需要提示用户输入项目编号,然后在GUI中打印可能的项目编号的返回列表

    如果可能的话,我想使用tkinter来创建我的GUI,因为我对它的了解非常有限。我正在使用Python 3.2.2。这可能吗

    更新::

    看了这些建议后,我得到了以下代码:

    class App:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()
    
        self.l=Label(frame, width = 50, anchor=CENTER, justify=CENTER, text="Please choose from the following options: \n1. Option1\n2. Option2\n3. Option3\n4. Option4\n5. Quit")
        self.l.pack()
    
        self.e = Entry(frame, width=5)
        self.e.pack()
        self.e.focus_set()
    
        self.w1=Label(frame, text="Please enter 1-5")
        self.w1.pack()
    
        self.e1=Entry(frame, width=16)
        self.e1.pack()
        self.e1.focus_set()
    
        self.w2=Label(frame, text="Enter item number")
        self.w2.pack()
    
        self.button=Button(frame, text="Return List", state=DISABLED)
        self.button.pack()
    root = Tk()
    
    app=App(root)
    
    root.mainloop()
    
    现在我的问题是如何从两个条目小部件(self.e和self.e1)获取信息并使用按钮执行函数

    例如,如果用户在self.e entry小部件上输入选项4,在self.e1小部件上输入1234567890,然后按下按钮,我需要调用函数option4(1234567890)

    我需要两个条目小部件来返回数字,但似乎一直无法解决如何实现这一点。我意识到在button小部件中,我需要将state=替换为command=但不确定如何将e.get()和e2.get()绑定到按钮


    谢谢你的帮助

    有许多不同的解决方案,但无论如何,您必须创建一个tkinter变量,并将其连接到您的
    self.e
    条目。就像这样:

    import tkinter as tk
    ...then you code with class declaration and so on...
    self.var1 = tk.StringVar()
    self.e = tk.Entry(frame, textvariable = self.var1) 
    
    通过声明,您将在e条目中键入的任何内容都将被放入var1变量中。您将能够通过
    self.var1.get()

    通过以下方式将函数
    func(*args)
    与按钮耦合:

    self.btn = tk.Button(frame, text = 'some text', command = func)
    
    请注意,它是
    func
    ,而不是
    func(*args)
    。因此,
    tk.按钮
    命令
    选项应该获得函数的处理程序


    另外,试着告诉学生如何使用tk实现GUI,这是一个很好的观点,在我看来

    是的,这是可能的。查看简介,然后查看标签、条目和按钮小部件。这应该足够构建这个GUI了。你是要我们为你编写程序吗?你对问题的某个具体部分有意见吗?布莱恩,是的,这是我的第一个想法,但我会尝试看看@petem的建议,这可能会帮助我更好地保留这一点。我正在研究解决方案,但它涉及使用一个文本框,然后使用2个simpledialog,但最终我打开了3或4个窗口。如果可能的话,我真的很想把它放在一个窗口里。感谢你们的帮助和投入。