Tkinter 标签的清理列表

Sanitizing list for Tkinter label

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

{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()

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

您在输出中看到的花括号是 Tkinter 尝试将列表打印成字符串的结果。在将列表传递给 var.set.

之前,您应该明确地将其转换为字符串