在Python 3.2中使用tkinter捕获输入

时间:2014-03-10 17:50:32

标签: python python-3.x tkinter

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

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

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

    我想使用tkinter创建我的GUI,如果可能的话,因为它是我非常有限的知识。我使用的是Python 3.2.2。这可能吗?

    UPDATE ::

    在查看建议后,我有以下代码:

    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()
    

    现在我的问题是如何从2个条目小部件(self.e和self.e1)获取信息并使用按钮执行函数。

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

    我需要两个输入小部件来返回数字,但似乎被困在如何实现这一点。我在按钮小部件中意识到我需要用命令=替换state =但不确定如何将e.get()和e2.get()绑定到按钮。

    感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这有很多不同的解决方案,无论如何你必须创建一个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()

访问var1的值

您可以通过以下方式将函数func(*args)与按钮结合使用:

self.btn = tk.Button(frame, text = 'some text', command = func)

请注意,它是func,而不是func(*args)。因此tk.Button command选项应该获得函数的处理程序。

另外,在我看来,尝试http://www.tkdocs.com/tutorial/这对于了解如何使用tk进行图形用户界面非常重要