Как выбрать Python Tkinter столбцы с defaultdict? - PullRequest
0 голосов
/ 30 ноября 2018

Я могу выбрать строки с defaultdict в моей программе tkinter, но я не знаю, как выбрать весь столбец.Я понимаю концепцию defaultdict (список), но я не знаю, как код для выбора столбца.Настройка defaultdict происходит с частью более крупной программы, поэтому я должен использовать эту настройку.если кто-то может помочь мне с выбором столбца, это будет высоко ценится.Имея свои ограниченные знания, я знаю, что для доступа к значению словаря мне нужно иметь [] [] для доступа к его значению, где бы я поместил это в свой код?например, если я хочу поместить красный цвет в столбец [1], как бы я это сделал?

import pulp
import tkinter as tk
from tkinter import ttk
from collections import defaultdict

class Application(ttk.Frame): #inherent from frame.

    def __init__(self, parent):
        tk.Frame.__init__(self, parent, bg="LightBlue4")
        self.parent = parent
        self.pack()
        self.labels_dict = defaultdict(list)
        self.GUI()

    def GUI(self):
        for i in range (9):
            for day in range(7):
                self.label = tk.Label(self, relief="ridge", width=11,     
                height=3)
                self.label.grid(row=i, column=day, sticky='nsew')
                self.labels_dict[i].append(self.label)

        self.button=tk.Button(self, text="Caluculate", bg="salmon")
        self.button.grid(row = 10, column = 6)

        for (i) in self.labels_dict:
            for element in self.labels_dict[1]:
                element.configure(bg = "red")


def main():
    root = tk.Tk()
    root.title("class basic window")
    root.geometry("1200x600")
    root.config(background="LightBlue4")
    app = Application(root)
    root.mainloop()

if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 30 ноября 2018

Чтобы получить доступ к столбцу, вы можете пройтись по строкам и взять n-й элемент каждой строки, например

for row in self.labels_dict:
    element = self.labels_dict[row][1]
    element.configure(bg = "red")

Чтобы получить доступ к строке, вам не нужен двойной цикл, который у вас есть,Вы можете просто взять одну строку и пройтись по элементам этой строки

for element in self.labels_dict[1]:
    element.configure(bg = "red")
...