每次在tkinter中按下按钮时,如何获得不同的标签值?

克里斯T4

因此,我正在制作一个随机的名称生成器。一切都在我的GUI中完成。问题是我只能按一次“生成”按钮来获取所有需要的值。如何无限次按下按钮,每次按下按钮都会获得不同的值。

我是否需要进行某种循环?我放在lambda里面。这会阻止刚打开GUI时在我的屏幕上显示的值。这样,您可以按按钮,文本将像正常情况一样显示。

firstnameli = ['Chris ', 'Kevin ', 'Jeff ', 'Marty ', 'Dolen ']
lastnameli = ['Smith', 'Miller', 'Jones', 'Davis', 'Brown']

full_name = random.choice(firstnameli) + random.choice(lastnameli)

#this allows text to be put in the text box
estr = StringVar()
estr.set(full_name)

fullnameentry = Entry(MyWin, borderwidth=5, font=("Helvetica", 15))

def buttonfunc():
    fullnameentry.config(text=estr)

genbutton = Button(MyWin, text="GENERATE", activebackground="blue", command= lambda: buttonfunc())

您只生成一次随机名称。从那时起,estr将始终是相同的值。

如果您感到满意,lambda可以使用它来实现full_name一个功能:

full_name = lambda: random.choice(firstnameli) + random.choice(lastnameli)

然后,您将不得不调用 full_name因为它不再是一个简单的字符串变量,而是一个函数:

estr.set(full_name())

此外,你似乎错过设置textvariable=estrfullnameentry

一切放在一起:

firstnameli = ['Chris ', 'Kevin ', 'Jeff ', 'Marty ', 'Dolen ']
lastnameli = ['Smith', 'Miller', 'Jones', 'Davis', 'Brown']

full_name = lambda: random.choice(firstnameli) + random.choice(lastnameli)

#this allows text to be put in the text box
estr = StringVar()
estr.set(full_name())

fullnameentry = Entry(MyWin, textvariable=estr, borderwidth=5, font=("Helvetica", 15))

def buttonfunc():
    estr.set(full_name())

genbutton = Button(MyWin, text="GENERATE", activebackground="blue", command=buttonfunc)

我还认为您的代码在某些方面可能有点太复杂。这是一个最小而完整的tkinter示例,也许这会在某种程度上为您提供帮助:

import tkinter as tk
import random

def random_name():
    first_names = ['Chris', 'Kevin', 'Jeff', 'Marty', 'Dolen']
    last_names = ['Smith', 'Miller', 'Jones', 'Davis', 'Brown']
    full_name = '{} {}'.format(random.choice(first_names), random.choice(last_names))
    return full_name

def update_label_and_entry():
    new_random_name = random_name()
    label.config(text=new_random_name)
    entry.delete(0, tk.END) # delete content from 0 to end
    entry.insert(0, new_random_name) # insert new_random_name at position 0

root = tk.Tk()
label = tk.Label(root)
label.pack()
entry = tk.Entry(root)
entry.pack()
button = tk.Button(root, text="New random name", command=update_label_and_entry)
button.pack()
root.mainloop()

当然,这段代码并不完美。该代码可进一步例如通过移动来改善first_nameslast_names到全局命名空间,因此其它方法可以访问的值,太。另外,您可以为窗口或包含该update_label方法的标签编写一个类

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获得一个UI按钮,使其在每次按下时执行不同的任务?

如何获得不同的行数以及每次在 Python 中执行时的值?

如何在python 3的tkinter中按下按钮时显示标签

当在 tkinter 中按下按钮时,如何使标签循环通过预设的单词或短语

在prometheus / grafana中获得不同标签值的计数

按下按钮更新Tkinter中的标签

每次按下按钮时如何播放声音而不会冻结Tkinter

如何创建一个循环来在每次按下按钮时指定不同的动作?

每次在 Xamarin 中按下按钮时尝试显示不同的报价

如何在脚本中使用random.choice,以便在每次关闭按钮后都不会关闭Tkinter窗口而获得不同的结果?

如何使用golang在mongodb中获得不同的值

如何从对象的嵌套列表中获得不同的值?

如何在 Postgresql 中获得不同的值?

在Python 3.5.2中使用tkinter从按钮按下时的输入字段中更新标签

每次打开终端时自动获得不同的终端颜色

每次用户按下按钮时如何进行迭代?

每次按下按钮时,如何使scrollView移动?

每次按下按钮时如何打开GIF

每次按下按钮时如何停止面板加载

每次按下按钮时,如何在文本文件中打印新行?

如何在 micropython 中通过每次按下按钮时增加 5 秒来点亮 LED

如何获得不同值的数量?MySQL的

XSLT 1.0如何获得不同的值

按下按钮后试图在tkinter中隐藏标签

通过按一下按钮更新tkinter中的标签

在Tkinter中按下按钮后更新标签文本

用tkinter按下按钮时如何更改按钮的颜色?

如何在不按 Python3 中的按钮的情况下更改 tkinter 标签的文本?

当我希望从 Kotlin 中的一个 SharedPreferences 键获得不同类型值时如何转换类型?