【问题标题】:Create color entry in tkinter grid [duplicate]在 tkinter 网格中创建颜色条目 [重复]
【发布时间】:2021-07-19 19:26:48
【问题描述】:

我想在 tkinter 中像数独网格(粗细线)一样做一个 9*9 的网格。所以我认为最好的方法是使用 Canvas 并创建矩形或线条。 但我希望每个矩形都包含用于存储数据的条目小部件。我该怎么做?使用 Canvas 或入口网格? (但后者没有颜色来给线条上色(不是矩形))

谢谢你 编辑:我想在每个正方形中着色并有条目小部件

【问题讨论】:

  • 为什么是tkinter.Canvas。我建议您使用tkinter.Frame,以便您可以致电<tkinter widget>.grid(row=<row number>, column=<column number>)
  • 但是使用 Frames 我无法获得与数独游戏相同的输出(粗线不是粗矩形)
  • 你想要什么颜色?我在带有您需要的边框的网格中创建了条目。
  • @Béa 你可以使用LabelFrame
  • 谢谢你

标签: python sqlite tkinter


【解决方案1】:

试试这样的:

import tkinter as tk


class SudokuGUI:
    def __init__(self, font_size:int=30):
        self.root = tk.Tk()
        self.chunks = []
        self.frames_list = []
        self.font_size = font_size
        for i in range(3):
            for j in range(3):
                self.create_chunk(i, j)

    def create_chunk(self, row:int, column:int) -> None:
        frame = tk.Frame(self.root, bd=3)
        frame.grid(row=row, column=column)
        self.frames_list.append(frame)

        chunk = []
        for row_number in range(3):
            for column_number in range(3):
                entry = tk.Entry(frame, width=2, justify="center",
                                 font=("", self.font_size),
                                 disabledforeground="black")
                entry.grid(row=row_number, column=column_number)
                chunk.append(entry)
        self.chunks.append(chunk)

    def set(self, chunk:int, cell:int, value=None, **kwargs) -> None:
        if value is not None:
            self.chunks[chunk][cell].delete(0, "end")
        self.chunks[chunk][cell].insert("end", value)
        self.chunks[chunk][cell].config(**kwargs)

    def mainloop(self) -> None:
        self.root.mainloop()


app = SudokuGUI()
app.set(chunk=5, cell=5, value=1, state="disabled")
app.mainloop()

我将板分成 9 个条目。我添加了.set 方法,用于设置给定块中给定单元格的状态/值。您可以使用它来设置给定的值。它还会禁用这些条目中的用户输入。

【讨论】:

  • 超级!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
相关资源
最近更新 更多