如何在tkinter中动态创建多个标签

时间:2018-12-18 06:17:11

标签: python tkinter

我想像这样动态创建带有文本的多个标签 enter image description here

示例代码如下:

name=[vj,aj,bon...]
percentage=[96,85,90,65....]
domain=[html,js,css,java...]

和查看按钮。我不知道要这样做。

1 个答案:

答案 0 :(得分:1)

您可以定义一个自定义窗口小部件,以将四个对象(3个标签和1个按钮)包装在frame内,然后根据您的数组创建自定义窗口小部件。下面是示例代码:

from tkinter import *

root = Tk()

class MyLabel(Frame):
  def __init__(self, master, name, percentage, domain):
    Frame.__init__(self, master, bd=2, relief='raised')
    Label(self, text='%3d%%'%percentage, font=('Arial', 24), fg='#88F', width=4, anchor='e').grid(row=0, column=0, rowspan=2)
    Label(self, text=name, font=('Aria', 16, 'bold'), fg='black', width=15, anchor='w').grid(row=0, column=1)
    Label(self, text=', '.join(domain), font=('Aria', 10), fg='black').grid(row=1, column=1, sticky='w')
    Button(self, text='View', fg='white', bg='#44F').grid(row=0, column=2, rowspan=2, padx=10)
    self.columnconfigure(1, weight=1)

name = ['vj', 'aj', 'bon', 'hi']
percentage = [96, 85, 90, 65]
domain = [['html','css','js'], ['java','kotlin','python'], ['html','python'], ['java','html','css','js']]

for i, n in enumerate(name):
  MyLabel(root, n, percentage[i], domain[i]).pack(expand=True, fill='x')

root.mainloop()

和输出:

enter image description here