【问题标题】:Sanitizing list for Tkinter labelTkinter 标签的消毒清单
【发布时间】:2016-04-11 13:24:49
【问题描述】:

我正在尝试构建一个简单的名称生成器作为一个项目,我已经让它工作了,但它没有正确输出我得到这样的输出:

{NameA}{NameB}NameC NameD{NameE}

虽然我知道它们被存储在这样的列表中:

['Name A', 'NameB', 'NameC', 'NameD', 'NameE']

这里是完整的代码:

import tkinter as tk
import random

printout = []

def generate():
for _ in range(var1.get()):
    C = random.randrange(6)

    if C == 0:
        printout.append(random.choice(Prefix))
    elif 1 <= C <= 2:
        printout.append(random.choice(Prefix)+random.choice(Suffix))
    elif 3 <= C <= 5:
        printout.append(random.choice(Prefix)+" "+random.choice(Prefix)+random.choice(Suffix))
var.set(printout)
print(printout)

root = tk.Tk()
root.title("Simple GUI")
root.geometry("200x200")

var = tk.StringVar()

app = tk.Frame(root)
app.grid()

list1 = [1, 5, 10, 50]
var1 = tk.IntVar(app)
var1.set(1)
drop = tk.OptionMenu(root,var1,*list1)
drop.grid()

label = tk.Label(app, text = "How many results:")
label.grid()

button1 = tk.Button(app, text = "Generate!", command=generate)
button1.grid()


label2= tk.Label(app, textvariable=var)
label2.grid()

with open('D:/My Documents/prefix.txt') as f:
Prefix = [line.rstrip('\n') for line in f]
with open('D:/My Documents/suffix.txt') as r:
Suffix = [line.rstrip('\n') for line in r]

root.mainloop()

我在网上找不到有这个问题的人,所以我不确定发生了什么。

【问题讨论】:

  • basroom suffix.txtbasroom prefix.txt的内容是什么?
  • 请写一个minimal reproducible example,它不要求我们在我们的 D 盘上有前缀和后缀的文本文件。
  • 什么是“santiasing”?您指的是“消毒”吗?
  • @BryanOakley 是的,我希望它输出为“NameA NameB NameC”等。

标签: python tkinter label


【解决方案1】:

您在输出中看到的花括号是 Tkinter 尝试将列表打印为字符串的结果。您应该在将列表传递给var.set 之前将其显式转换为字符串。

【讨论】:

  • 谢谢,似乎已经修复了它,甚至还想出了如何将它同时创建到一个新行中。
猜你喜欢
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多