如何在列表框中插入制表符?

时间:2018-01-06 19:47:19

标签: python tkinter tabs listbox

from tkinter import *
import tkinter

root = Tk()

name = 'Jeff'

dob = '01/01/2000'

gender = 'male'

text = str(name)+'\t'+str(dob)+'\t'+str(gender)

Lb = Listbox(root)
Lb.insert(0, text)
Lb.pack()

Lb.selection_set(0)

root.mainloop()

运行此代码时,它会显示名称,然后是dob,然后显示男性,就像它被问到的那样,但它们之间没有显示标签。我知道有一个简单的解决方案,只需插入手指空间而不是标签,但这是一个更大的项目的一部分,手指空间将使代码难以置信的尴尬和低效处理。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

经过研究,我了解到如果你想将一个tab \ t插入一个tkinter列表框,它将无法在Windows操作系统上运行,我不知道为什么......

我设法找到wiffleball687 www.reddit.com http://jdpgrailsdev.github.io/blog/2014/09/09/spring_data_hibernate_join.html创建的解决方案。

import tkinter

def tabify(s, tabsize = 4):
    ln = ((len(s)/tabsize)+1)*tabsize
    return s.ljust(ln)

rt = tkinter.Tk()
listbox = tkinter.Listbox(rt, font = 'Courier') #change to a fixed width font
listbox.pack()
listbox.insert(tkinter.END, tabify('a') + 'b')
rt.mainloop()

答案 1 :(得分:0)

在列表框中插入选项卡的方式正是您执行此操作的方式。您恰好正在插入与tabstops对齐的数据。要查看我的意思,请在代码中添加以下行:

Lb.insert("end", "1\t2\t3\t4\t5")

您会看到日期和单词“male”与某些tabstops完全对齐。遗憾的是,您无法在列表框中配置tabstops。

enter image description here

如果您需要可配置的tabstops,则必须使用带有一些自定义绑定的Text小部件来模拟列表框。

答案 2 :(得分:-1)

我认为目前在Tkinter GUI中没有任何方法可以使用此功能。

经过一些研究后,我找到了一种使用文本小部件在GUI中设置文本格式的方法。

但是,我试图在列表框中使用此小部件是不成功的。

以下是演示Text小部件使用的简单代码示例。

from tkinter import *
import tkinter

root = Tk()

name = 'Jeff'
dob = '01/01/2000'
gender = 'male'

text = Text(root, height = 2, width = 30)
text.insert(END, str(name)+'\t'+str(dob)+'\t'+str(gender))
text.pack()

root.mainloop()

当我尝试将小部件Text插入到列表框中时,就像您在代码中有上面一样,我得到了这个结果。

Attempt to use a Text widget in a Listbox using Tkinter

我希望这有用,如果您有任何其他问题,请随时在下面发表评论!