質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1949閲覧

python3のtkinterでcanvas上に2次配列で並べた全セルを更新できない

wasabi1073js

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/06/16 14:52

編集2018/06/16 14:54

白色セルが縦10x横20と並べた上で、
上から1列目の左端のセルと、上から2列目の左端のセルを緑色に変えようとしているのですが、
上から一列目の20個の全セルが白色に上書きされただけで、意図した処理が行われません。
緑色のセルを希望の位置に表示したいのですが、
以下のコードのどの箇所を修正すればよろしいでしょうか。

ご教示のほど、よろしくお願いいたします。

python3

1import tkinter as tk 2import numpy as np 3 4 5DATA = [] 6data = np.zeros((10, 20)) 7 8x = 30 9y = 30 10xx = 0 11yy = 0 12 13root = tk.Tk() 14root.geometry("700x450") 15root.grid() 16 17canvas = tk.Canvas(root, width = 700, height = 500) 18canvas.create_rectangle(0, 0, 800, 450, fill='black') 19canvas.place(x=0, y=0) 20 21for j in range(10): 22 y += 30 23 x = 30 24 for i in range(20): 25 DATA = canvas.create_rectangle(20+x, 20+y, 50+x, 50+y, fill='white') 26 x += 30 27 28data[0][0] = 1 29data[1][0] = 1 30 31for i in range(10): 32 y = 30 33 x = 30 34 35 y += 30 36 37 yy = 0 38 39 if i == 0: 40 xx = 0 41 else: 42 xx += 1 43 44 for j in range(20): 45 if data[xx][yy] == 1: 46 DATA = canvas.create_rectangle(20+x, 20+y, 50+x, 50+y, fill='green') 47 yy += 1 48 x += 30 49 else: 50 DATA = canvas.create_rectangle(20+x, 20+y, 50+x, 50+y, fill='white') 51 yy += 1 52 x += 30 53 54 55root.mainloop() 56

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下、ソースコードの一部抜粋ですが、
「y=30」であるyの初期化を2重for文の外においてあげることで、
こちらの問題が解消しました。

python3

1data[0][0] = 1 2data[1][0] = 1 3 4y = 30 5 6for i in range(10): 7 x = 30 8 9 y += 30 10 11 yy = 0 12 13 if i == 0: 14 xx = 0 15 else: 16 xx += 1

投稿2018/06/16 17:37

wasabi1073js

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問