有什么方法可以使用tkinter标签小部件创建悬挂式缩进列表?注意:请使用适当的标准子弹,而不是*或-。
答案 0 :(得分:2)
我上了一堂课,可以做你想做的事
class BLabel(object):
b = "•"
def __init__(self,master):
import tkinter as tk
self.l = tk.Label(master)
def add_option(self,text):
if self.l.cget("text") == "":
self.l.config(text=self.b+" "+text)
else:
self.l.config(text=self.l.cget("text") +"\n"+ self.b + " "+text)
您可以像这样使用它:
lbal = BLabel(master=master)
lbal.add_option("Bullet1") #<-- adding item
lbal.add_option("Bullet2") #<-- adding item
lbal.l.pack() #<-- Packing
这是示例代码:
import tkinter as tk
root = tk.Tk()
class BLabel(object):
b = "•"
def __init__(self,master):
import tkinter as tk
self.l = tk.Label(master)
def add_option(self,text):
if self.l.cget("text") == "":
self.l.config(text=self.b+" "+text)
else:
self.l.config(text=self.l.cget("text") +"\n"+ self.b + " "+text)
lbal = BLabel(master=root)
lbal.add_option("Bullet1")
lbal.add_option("Bullet2")
lbal.l.pack()
这是上面代码的输出:
这样,您可以使用pack
,place
或grid
。示例:
网格:
lbal.l.grid(row=0,column=0)
地点:
lbal.l.place(x=0,y=0)
包装:
lbal.l.pack()
答案 1 :(得分:1)
您可以使用unicode代码点作为粗略的实现:
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
class BulletLabel(tk.Label):
def __init__(self, master, *args, **kwargs):
text = kwargs.pop('text', '')
kwargs['text'] = self.bulletise(text)
tk.Label.__init__(self, master, *args, **kwargs)
def bulletise(self, text):
if len(text) == 0: # no text so no bullets
return ''
lines = text.split('\n')
parts = []
for line in lines: # for each line
parts.extend(['\u2022', line, '\n']) # prepend bullet and re append newline removed by split
return ''.join(parts)
def configure(self, *args, **kwargs):
text = kwargs.pop('text', '')
if text != '':
kwargs['text'] = self.bulletise(text)
tk.Label.configure(*args, **kwargs)
root = tk.Tk()
blabel = BulletLabel(root, text='one\ntwo\nthree')
blabel.pack()
root.mainloop()
答案 2 :(得分:0)
使用消息小部件会更好,这是一个标签小部件,旨在显示多行文本。对于子弹,您可以使用unicode字符串。例如:
import tkinter as tk
root = tk.Tk()
point = '\u2022'
msg = tk.Message(root, text='Hello\n%s World.' % point)
msg.pack()