ソフトウェア エンジニアリング クラスのボードゲームの GUI を構築しています。Python 2.7 (Windows) で TKinter ツールキットを使用しています。ボタンの特定の順序を無視/忘れる方法が見つからないように見えるため、現在行き詰まっています。基本的に、ゲーム ボードを表すボタンのグリッドを作成しようとしています。そして現在、7x7 グリッドに合計 49 個のボタンがあるゲーム ボードがあります。
これまでのところ、これは私ができることです:
- 列 = x および行 = y であるすべてのボタン オブジェクトをインスタンス化します。これにより、x*y のグリッドが簡単に作成されます
- 次に、各ボタンをリストに配置します (これを list1 と呼びます)
ボタン オブジェクトのリストを使用して、(適切な説明がないため) 特定のボタンを無視/忘れ/削除したいと考えています。grid_forget を使用するボタン オブジェクトのインデックスの 2 番目のリスト (list2) を作成し、2 つのリストを比較して、list2 にないものだけを保持できると考えています。残念ながら、これは私が望むようには機能しません。コードは次のとおりです。
gameboard = ttk.Labelframe(root, padding = (8,8,8,8), text = "Gameboard", relief = "sunken") #forgetButtons will not be displayed on the game board b/c they do not have a #label (they are not a: room, hallway, starting space) forgetButtons = [0,1,3,5,6,7,13,14,16,18,21,30,32,41,42,43,45,46,47,48] #this list tracks all the buttons on the gameboard myButtons=[] count = 0 for x in range(7): #build a 7x7 grid of buttons (49 buttons total) for y in range(7): btn = Button(gameboard, width=7, height=4) myButtons.append(btn) btn.grid(column=x, row=y, padx = 3, pady = 3) #do some comparison here between the two lists #to weed out the buttons found in forgetButtons #**or maybe it should not be done here?** btn.config(text="Room%d\none\ntwo\nfour\nfive" % x)