2011-01-10 19 views
5

私はTkinterを学び、シンプルな8パズルゲームを構築しています。
(例:http://www.permadi.com/java/puzzle8/Python Tkinterパディング問題

各数値は、グリッドレイアウトを使用してフレームに配置されたCanvasオブジェクトです。オブジェクトの1つは、Canvasオブジェクト間に余分なパディングを追加することです。キャンバスオブジェクトの境界線の幅を-2に設定して、いくつかの人々の問題を解決しましたが、余分な余分なパディングが減少しました。この値を-4に設定すると、私のキャンバス領域に切れていきます。

グリッドレイアウトのセルにデフォルトのパディングまたはボーダー幅があると仮定していますが、削除する方法が見つかりませんでした。 Canvasオブジェクトでgrid()を呼び出すときにpadx、pady、ipadx、ipadyの値を設定しても、どちらも役に立ちません。

私が見つけたもう一つの奇妙な点は、私のCanvasオブジェクトの境界をcreate_rectangleを使って作成したときでしたが、私はx_1とy_1を4,0で0,0,2の代わりに開始しなければなりませんでした。 2pxボーダー。

ここに私のコードです。どのようなヘルプ/アドバイス/回避策/そうでなければ、大いに感謝します。

#!/usr/bin/python 

from Tkinter import * 

class Number(Canvas): 
    def __init__(self, master=None, number=1): 
     Canvas.__init__(self, master, width=100, height=100, bd=-2) 
     self.create_text(50, 50, text=str(number), anchor=CENTER) 
     self.create_rectangle(4, 4, 98, 98, width=2) 


class Application(Frame): 
    def create_widgets(self): 
     self.playarea = Frame(self, width=300, height=300) 
     self.playarea.grid_propagate(0) 
     self.playarea.grid() 
     self.playarea.numbers = [] 
     for number in xrange(1, 10): 
      num_obj = Number(self.playarea, number) 
      self.playarea.numbers.append(num_obj) 
      row = number // 3 
      col = number % 3 
      num_obj.grid(row=row, column=col) 

    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.grid() 
     self.create_widgets() 


def main(): 
    app = Application() 
    app.master.title("Sample Application") 
    app.mainloop() 

if __name__ == '__main__': 
    main() 

答えて

9

は、ほとんどの場合、あなたの問題の原因は、あなたがゼロに各キャンバスのhighlightthickness属性を設定するために無視しているということです。この値は、フォーカスがあることを示すのに使用されるウィジェットの周りの色付きリングを制御します。

これらのタイプのレイアウトの問題を解決しようとすると、次のようなトリックが発生します。それぞれのウィジェットに異なる背景色(つまり、ルートウィンドウの色、内部フレームの色、キャンバスの色)を指定します。色をガイドとして使用して、削除しようとしているスペースを所有しているウィジェットを確認することができます。

+1

ハイライトの太さが原因でした。助けてくれてありがとう!バックグラウンドのトリックも驚異的でした。 "各ウィジェットに異なる背景色を与える"の場合は – zrbecker

+1

+10。私はこれまで、レイアウトの面で難しい問題を抱えていましたが、あなたがそれを述べるまでそれを忘れてしまいました。 –

関連する問題