【发布时间】:2015-11-10 10:12:14
【问题描述】:
我正在尝试编写一个程序,该程序将显示 4 行 2 列,第 0 列是标签,第 1 列是条目。然后,当单击按钮时,将这 4 个整数条目作为参数传递给函数。到目前为止,这是我的代码:
from tkinter import *
root = Tk()
class ClassName():
def __init__(self, master):
self.run_button = Button(self.master, text="Button Text", bg="green", fg="black",
command="HERE IS WHERE I NEED HELP")
self.run_button.grid(row=4, columnspan=2)
self.label1 = Label(master, text="Entry 1").grid(row=0, sticky=E)
self.label2 = Label(master, text="Entry 2").grid(row=1, sticky=E)
self.label3 = Label(master, text="Entry 3").grid(row=2, sticky=E)
self.label4 = Label(master, text="Entry 4").grid(row=3, sticky=E)
self.entry1 = Entry(master).grid(row=0, column=1, sticky=W)
self.entry2 = Entry(master).grid(row=1, column=1, sticky=W)
self.entry3 = Entry(master).grid(row=2, column=1, sticky=W)
self.entry4 = Entry(master).grid(row=3, column=1, sticky=W)
然后我想获取 4 个条目并将它们传递给一个名为 the_function 的不同函数。 the_function 所做的只是根据 4 个条目的值打印出一些内容。所以我剩下的代码是这样的:
def the_function(self, a, b, c, d):
# Ensure a, b, c, and d are integers,
# do some math on the numbers and print something out based on the
# values of a, b, c and d.
irrelevant_variable = ClassName(root)
root.mainloop()
该功能在没有 GUI 的情况下正常工作,但我无法弄清楚如何创建一个按钮,该按钮采用 self.entry1 并将其作为 a 传递给 the_function。
其他帖子让我认为我应该使用lambda 命令,但我不确定它在这个函数中是如何工作的。
【问题讨论】:
-
你should not assign a widget on the same line that you
gridit。你在用教程吗?我正在尝试确定这个常见错误是否有单一来源,或者是否每个新用户都独立成为它的受害者。 -
马克,请在评论中回复凯文的问题。请发布您正在使用的教程的链接,以便我们尝试防止其他人在将来遇到同样的问题。
-
@Kevin - 我通常不会错过几何方法链接的小部件分配,但我今天做到了。 :) 我会在我的回答中提到它。
-
我引用的教程建议在我介绍它们的同一行上格式化小部件,该教程由 thenewboston 在 YouTube 上发布,标题为“Python GUI with Tkinter - 4 - Grid Layout”。也许我会更适合阅读完整的教程,然后接近该项目。有什么靠谱的教程推荐吗?
-
从技术上讲,您可以执行此链接,它会显示小部件,但是当您想要返回其中一个小部件时它变得不合适,例如获取
Entry小部件的内容.我喜欢Effbot,但这更像是偶尔提供示例的参考,而不是完整的教程。
标签: python button lambda tkinter multiple-arguments