как поместить элемент списка в матрицу меток в последовательности? - PullRequest
0 голосов
/ 27 апреля 2018

Я борюсь с этим для цикла. как поместить числа по отдельности в матрицу в последовательности, начиная с позиции [1], [1]? когда он дойдет до конца строки, он продолжит последовательность до следующей строки, начиная со столбца 1.

код, который у меня есть, либо в форме столбца, либо в форме строки.

Я знаю, что что-то упустил, но не уверен, что. большое спасибо.

import tkinter as tk
the_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
new_list = {}

def main():

    root = tk.Tk()
    root.title("class basic window")
    root.geometry("800x500")
    root.config(background="LightBlue4")
    app = Application(root)
    root.mainloop()


class Application(tk.Frame):

    def __init__(self, parent):
        tk.Frame.__init__(self, parent, bg="ivory2", bd=2, relief=tk.RAISED)   
        self.parent = parent
        self.pack(fill=tk.BOTH, expand=1)
        self.initUI()


    def initUI(self):

        for i in range(8):
            for j in range(6):
                self.label=tk.Label(self, relief="ridge",width=13, height=3 )
                self.label.grid(row=i, column=j, sticky="nsew", )


        i = 0
        for num in the_list:
            new_list[i,j] = tk.IntVar()
            new_list[i,j].set(num)
            self.label = tk.Label(self, textvariable=new_list[i,j])
            self.label.grid(row=i, column=j)
            i += 1




if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 28 апреля 2018

Не совсем уверен, что это то, чего вы пытаетесь достичь, но это звучало так, как будто вы хотели поместить числа в the_list в последовательные поля, начиная с верхнего левого угла, работая слева направо, затем сверху вниз , Если это так, то следующий код сделает это.

import tkinter as tk

the_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
new_list = {}

def main():

    root = tk.Tk()
    root.title("class basic window")
    root.geometry("800x500")
    root.config(background="LightBlue4")
    app = Application(root)
    root.mainloop()

class Application(tk.Frame):

    def __init__(self, parent):
        tk.Frame.__init__(self, parent, bg="ivory2", bd=2, relief=tk.RAISED)   
        self.parent = parent
        self.pack(fill=tk.BOTH, expand=1)
        self.initUI()


    def initUI(self):

        i = 0
        for r in range(8):
            for c in range(6):
                self.label=tk.Label(self, relief="ridge",width=13, height=3 )
                self.label.grid(row=r, column=c, sticky="nsew", )
                if i < len(the_list):
                    self.label['text'] = str(the_list[i])
                    i += 1

if __name__ == '__main__':
    main()
...