gpt4 book ai didi

python - 使用 tkinter、GUI 制作字典

转载 作者:太空宇宙 更新时间:2023-11-03 17:09:36 24 4
gpt4 key购买 nike

我想使用 GUI 制作一本字典,我正在考虑制作两个条目,一个用于对象,另一个用于键。我想制作一个按钮来执行信息并将其添加到空字典中。

from tkinter import *

fL = {}

def commando(fL):
fL.update({x:int(y)})


root = Tk()
root.title("Spam Words")

label_1 = Label(root, text="Say a word: ", bg="#333333", fg="white")
label_2 = Label(root, text="Give it a value, 1-10:", bg="#333333", fg="white")
entry_1 = Entry(root, textvariable=x)
entry_2 = Entry(root, textvariable=y)

label_1.grid(row=1)
label_2.grid(row=3)

entry_1.grid(row=2, column=0)
entry_2.grid(row=4, column=0)

but = Button(root, text="Execute", bg="#333333", fg="white", command=commando)
but.grid(row=5, column=0)

root.mainloop()

我想稍后在我的主程序中使用该字典。你看它是否是一个函数,我会进入 IDLE 并执行...

 def forbiddenOrd():

fL = {}
uppdate = True
while uppdate:
x = input('Object')
y = input('Key')
if x == 'Klar':
break
else:
fL.update({x:int(y)})
return fL

然后在我的程序中进一步使用该函数有什么建议么?我很感激。谢谢

最佳答案

您即将实现您想要的目标。需要进行一些修改。首先,让我们从输入框 entry_1entry_2 开始。像您一样使用文本变量是一个很好的方法;但是我没有看到它们的定义,所以它们在这里:

x = StringVar()
y = StringVar()

接下来,我们需要更改调用 commando 函数的方式以及通过它传递的参数。我想传递 xy 值,但我不能仅使用 command=commando(x.get(), y.get()),我需要使用lambda,如下所示:

but = Button(root, text="Execute", bg="#333333", fg="white", command=lambda :commando(x.get(), y.get()))

现在为什么我将值 xy 传递为 x.get()y.get()?为了从 tkinter 变量(例如 xy)获取值,我们需要使用 .get()

最后,让我们修复 commando 函数。您不能像使用 fL 作为参数那样使用它。这是因为您在那里设置的任何参数都会成为该函数的私有(private)变量,即使它出现在代码中的其他位置。换句话说,将函数定义为 def commando(fL): 将阻止在 commando 内评估函数外部的 fL 字典。你如何解决这个问题?使用不同的参数。由于我们将 xy 传递到函数中,因此我们将它们用作参数名称。这就是我们的函数现在的样子:

def commando(x, y):
fL.update({x:int(y)})

这将在您的字典中创建新项目。这是完整的代码:

from tkinter import *

fL = {}

def commando(x, y):
fL.update({x:int(y)}) # Please note that these x and y vars are private to this function. They are not the x and y vars as defined below.
print(fL)

root = Tk()
root.title("Spam Words")

x = StringVar() # Creating the variables that will get the user's input.
y = StringVar()

label_1 = Label(root, text="Say a word: ", bg="#333333", fg="white")
label_2 = Label(root, text="Give it a value, 1-10:", bg="#333333", fg="white")
entry_1 = Entry(root, textvariable=x)
entry_2 = Entry(root, textvariable=y)

label_1.grid(row=1)
label_2.grid(row=3)

entry_1.grid(row=2, column=0)
entry_2.grid(row=4, column=0)

but = Button(root, text="Execute", bg="#333333", fg="white", command=lambda :commando(x.get(), y.get())) # Note the use of lambda and the x and y variables.
but.grid(row=5, column=0)

root.mainloop()

关于python - 使用 tkinter、GUI 制作字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34235877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com