Tkinter在“” .join()之后插入为[list]的输出

时间:2019-04-30 18:39:56

标签: python-3.x tkinter tkinter-entry

我正在制作一个使用tkinter GUI将数字转换为二进制的python程序。在条目上使用e.insert时,它将返回一个普通字符串: 0101010011 如 [0,1,0,1 ...]

将数字转换为二进制的函数。我知道存在bin()替代方案,我只是想创建自己的替代方案。

def dec2bin(decnum):
  binarylist = []
  while (decnum > 0):
    binarylist.append(decnum % 2)
    decnum = decnum // 2
  binarylist.reverse()
  binarylist = str(binarylist)
  return "".join(binarylist)

按下tkinter gui中的按钮时调用的函数,该函数旨在用二进制输出替换输入框的文本之一。

def convert():
  decimal = entrydec.get()
  decimal = int(decimal)
  entrybin.delete(0, END)
  entrybin.insert(0, dec2bin(decimal))

我希望输出010101,但实际输出是[0,1,0,1,0,1]

1 个答案:

答案 0 :(得分:2)

您不能在列表上使用str()-str([0, 1, 0, 0])来获取带有字符串的列表-["0", "1", "0", "0"]

您可以使用列表理解:

    binarylist = [str(x) for x in binarylist]

map()

    binarylist = map(str, binarylist)

或者添加到列表中时,必须将数字01转换为字符串:

    binarylist.append(  str(decnum % 2)  )

然后您可以使用join()

def dec2bin(decnum):
    binarylist = []

     while (decnum > 0):
        binarylist.append( str(decnum % 2) ) # <-- use str()
        decnum = decnum // 2

    binarylist.reverse()
    #binarylist = str(binarylist) # <-- remove it

    return "".join(binarylist)

dec2bin(12)

结果:

"1100"