Python GUI创建一个包含文本和复选框的列表项

时间:2018-04-09 07:50:49

标签: python list user-interface tkinter tree

我正在尝试创建一个类似Outlook的列表。对于具有如下布局的列表项:

enter image description here

不要误解我这不是一个"给我完整答案"题。我只是有正确命名的问题。如果有人能说出正确的话,我会非常感激,我将自己寻找。

我现在使用了tkinter,但似乎没有解决方案。

亲切的问候。

1 个答案:

答案 0 :(得分:0)

我认为Tkinter可以通过使用一些面向对象的编程来实现这一点,您可以定义一个列表元素的外观,然后使用静态变量,您可以定义相对于前一行位置的新行的位置。类似的东西:

from tkinter import *

class Line:
    y = 0 # static variable for the y position
    def __init__(self):
        self.y_local = Line.y
        Line.y = Line.y + 40 # increase the static variable for the next line
        print(self.y_local)
    def draw(self, tk, h_line="Headline", a_info="Addtional Information", date="01/01/1970"):
        self.label_head = Label(text=h_line)
        self.label_head.place(x=20, y=self.y)
        self.label_info = Label(text=a_info)
        self.label_info.place(x=20, y=self.y+20)
        self.label_date = Label(text='Date')
        self.label_date.place(x=200, y=self.y)
        self.label_ndate = Label(text=date)
        self.label_ndate.place(x=200, y=self.y+20)
        self.chkbtn = Checkbutton(tk, text="Checkbox")
        self.chkbtn.place(x=300, y=self.y+20)


tk = Tk()
data = [
    ["News", "WWIII has been avoided", "02/04/2018"],
    ["Python", "Python solves 42 riddles", "02/04/2018"]
]
for line in data:
    temp = Line()
    temp.draw(tk, line[0], line[1], line[2])

mainloop()

希望我能理解你的问题。您有一个包含信息的列表,并希望以简单且可扩展的方式显示该信息。我没想过要在信息周围添加线条,因为在我知道有分隔符之前我从未这样做过,我曾经使用过一次垂直但是如果你能画一个盒子我不会感到惊讶在每条线附近。