我學習的Tkinter和建立一個簡單的8益智遊戲。
(例如:http://www.permadi.com/java/puzzle8/)Python的Tkinter的填充問題
每個數字都是使用網格佈局放置到Frame中的Canvas對象。其中一個對象是在Canvas對象之間添加額外的填充。我設置了邊框寬度爲畫布對象-2這解決了一些人的問題,但只是稍微減少了微胖我。將此值設置爲-4開始切入我的畫布區域。
我假設的網格佈局的細胞有一些默認的填充或邊框寬度,但我還沒有找到一種方法來刪除它。設置padx,pady,ipadx,打電話時ipady值格()在畫布上的對象似乎並沒有幫助的。
我發現的另一個奇怪現象是當我爲我的Canvas對象製作邊框時使用了create_rectangle,但我必須以4,4而不是0,0或2,2開始x_1和y_1,這是我期望的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()
highlightthickness是罪魁禍首。謝謝您的幫助!背景技巧也創造了奇蹟。 – zrbecker 2011-01-10 12:47:15