2017-12-29 50 views
0

私はTkinterのGUIを使って、私のA-Level評価用のsudokuシミュレータを作成するように求められました。 私はボタンの9x9グリッドを作成することができましたが、すべての3行目を太字(A)にするか、ボタンの3x3グループごとに異なる色(B)にします。以下は、私が心に留めていたイメージです。 Aボタンの色Tkinter

B

は、ここに私のコードです。

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ループのように)割り当てることができるかについての助けもありがとう!

+0

私はこれがOOPを使うのにかなり良いプロジェクトだと思っています。各9x9はボックスクラスと考えることができます。 – Nae

+0

どのように私はこれをOOPに調整することができるかに関する任意のアイデア。私はプログラミングの面では全く新しいです –

+0

oopの構造については[this post](https://stackoverflow.com/a/17470842/7032856)と表示されます。 – Nae

答えて

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() 

...それは数字を割り当てることになると、私が思い付くためにあなたにそれを任せたいですシステム。

+0

ありがとう!私はこれを自分のコードに組み込むことができました。あなたの助けが大いに評価されました。 –