【问题标题】:Capturing input using tkinter in Python 3.2在 Python 3.2 中使用 tkinter 捕获输入
【发布时间】:2014-03-10 17:50:32
【问题描述】:

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

  1. 获取一个 10 位数的项目编号,其中包含一个不正确的数字,并通过更改每个数字返回一个可能的有效项目编号列表。
  2. 获取一个缺少数字的 9 位项目编号,并通过插入一个数字返回有效的 10 位项目编号列表
  3. 获取一个有多余数字的 11 位项目编号,并通过删除一个数字返回一个有效的 10 位项目编号列表
  4. 取一个 10 位项目编号,将 2 位数字转置,并通过切换数字返回一个有效的 10 位项目编号列表

我有 5 个函数可以完成这项任务。上述每个实例的函数,然后是确定项目编号是否有效的函数。这一切正常。

现在我想用一个显示上述 4 个选项和一个退出选项的 GUI 来启动程序。因此,用户可以选择列表 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()

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

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

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

感谢您的帮助!

【问题讨论】:

  • 是的,有可能。 effbot.org/tkinterbook/tkinter-index.htm 查看简介,然后查看标签、条目和按钮小部件。这应该足以构建这个 GUI。
  • 您是要我们为您编写程序吗?您是否遇到问题的特定部分?
  • Bryan,是的,这是我的第一个想法,但我会尝试查看 @petem 的建议,这可能有助于我更好地保留这一点。我正在研究解决方案,但它涉及使用文本框,然后是 2 个 simpledialog,但最后我打开了 3 或 4 个窗口。如果可能的话,我真的很想把它全部放在一个窗口中。谢谢你们的帮助和意见。

标签: python python-3.x tkinter


【解决方案1】:

这有很多不同的解决方案,但无论如何您都必须创建一个 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.Buttoncommand 选项应该得到你的函数的处理程序。

另外,尝试http://www.tkdocs.com/tutorial/ 在我看来,这是一个了解如何使用 tk 进行 GUI 的好点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多