按钮Tkinter的颜色

时间:2017-12-29 15:51:35

标签: python tkinter

所以我被要求为我的A-Level评估创建一个数独模拟器,在Tkinter中使用GUI。 我已经设法创建一个9x9网格的按钮,但我希​​望每个第3行都是粗体(A),或者每个3x3组按钮都有不同的颜色(B)。以下是我想到的图像。

B A

这是我的代码。

from tkinter import *

#Create & Configure root 
root = Tk()
Grid.rowconfigure(root, 0, weight=1)
Grid.columnconfigure(root, 0, weight=1)
root.resizable(width=False, height=False)

#Create & Configure frame 
frame=Frame(root, width=900, height = 900)
frame.grid(row=0, column=0, sticky=N+S+E+W)


#Create a 9x9 (rows x columns) grid of buttons inside the frame
for row_index in range(9):
    Grid.rowconfigure(frame, row_index, weight=1)
    for col_index in range(9):
        Grid.columnconfigure(frame, col_index, weight=1)
        btn = Button(frame, width = 12, height = 6) #create a button inside frame 
        btn.grid(row=row_index, column=col_index, sticky=N+S+E+W)


root.mainloop()

非常感谢任何帮助!

请注意:我后来打算为每个按钮添加数字并使其可以玩数独游戏,因此在创建解决方案时请记住这一点。关于我如何有效地为每个按钮分配数字(例如在for循环中)的任何帮助也将不胜感激!!

1 个答案:

答案 0 :(得分:0)

这是一个MCVE,演示了如何为按钮着色的方法:

import tkinter as tk

root = tk.Tk()

for row_index in range(9):
    for col_index in range(9):
        if (row_index in {0, 1, 2, 6, 7, 8} and col_index in {3, 4, 5}) or \
                (row_index in {3, 4, 5} and col_index in {0, 1, 2, 6, 7, 8}):
            colour = 'black'
        else:
            colour = None
        button = tk.Button(root, width=1, height=1, bg=colour)
        button.grid(row=row_index, column=col_index, sticky='nswe')

root.mainloop()

...在分配号码时,我会留给您一个系统。