首页 > 解决方案 > Python - 追加和插入导致花括号

问题描述

我想要一个按钮来获取复选框结果,并将它们放在滚动文本框中。但是当我运行以下命令时,我得到一堆花括号,在使用的变量之前和之后。

我只是在学习这一点,只能想象代码有多丑陋,但它可以工作....有点。

对于每组复选框,我都有一个方法,然后每个方法都被调用一个方法来组合它们。

我实际上不能相信,因为它主要是从互联网上拼凑起来的东西。

def combine_funcs(*funcs):
    def combined_func(*args, **kwargs):
        for f in funcs:
            f(*args, **kwargs)
    return combined_func



def addtolist():
    global List

    List = []
    for item in varList:
        if item.get() != "":
            List.append(item.get())
    sffScr.insert(INSERT, List)


def addtolistagain():
    global Listagain

    Listagain = []
    for item in varListagain:
        if item.get() != "":
            Listagain.append(item.get())
    sffScr.insert(INSERT, Listagain)
    sffScr.insert(END, '\n' "The second END " '\n')



# --- main ---



myApp = Tk()
myApp.title("GUI app")
myApp.geometry("800x700")

######
List = []
varList = []

var1 = StringVar()
cb1 = Checkbutton(myApp, text="Check set 1", variable=var1,
                           onvalue="check set 1" '\n'  , offvalue="")
cb1.grid(column=1, row=0, sticky=W)

var2 = StringVar()
cb2 = Checkbutton(myApp, text="check set 1, check 2", variable=var2,
                         onvalue="check set 1, check 2 '\n' ", offvalue="")
cb2.grid(column=1, row=1, sticky=W)

varList.append(var1)
varList.append(var2)

######
Listagain = []
varListagain = []

var1again = StringVar()
cb1again = Checkbutton(myApp, text="check set 2, check 1", variable=var1again,
                           onvalue="check set 2, check 1" , offvalue="")
cb1again.grid(column=2, row=0, sticky=W)

var2again = StringVar()
cb2again = Checkbutton(myApp, text="check set 2, check 2", variable=var2again,
                         onvalue="check set 2, check 2", offvalue="")
cb2again.grid( column=2, row=1, sticky=W)

varListagain.append(var1again)
varListagain.append(var2again)

######

b1 = Button(myApp, text="Add", command=combine_funcs(addtolist, addtolistagain))
b1.grid(row=1, column=3)

sffScrolW=50
sffScrolH=30

sffScr=scrolledtext.ScrolledText(myApp, width=sffScrolW, height=sffScrolH, wrap=tk.WORD)
sffScr.grid(column=0, row=3, columnspan=3, rowspan=15, sticky=tk.W, padx=5)

标签: python-3.xlistformattingstring-formatting

解决方案


因此,您必须将 List 转换为字符串。我了解到,当您打印对象列表时,您会得到卷曲的抽搐。更改我的一段代码:

def addtolist():
    global List

    List = []
    for item in varList:
        if item.get() != "":
            List.append(item.get())
    sffScr.insert(INSERT, List)

至:

def addtolist():
    global List

    List = []
    for item in varList:
        if item.get() != "":
            List.append(item.get())
    listString="".join(List)
    sffScr.insert(INSERT, listString)

推荐阅读