我正在使用gtk.Table結合EventBox爲每個單元繪製彩色網格。在嘗試了一個最小例子後,我發現窗口是實際表格的兩倍大。此外,當應用程序運行時,無法進一步收縮窗口。爲什麼gtk.Table需要兩倍的空間比它應該?
好像出了點錯可怕,但我無法找出原因。這裏的小例子,重現不當行爲:
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
class MyProgram:
def __init__(self):
app_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
app_window.set_border_width(10)
app_window.connect("delete_event", lambda w,e: gtk.main_quit())
vbox_app = gtk.VBox(False, 0)
table_layout = gtk.Table(rows=1,columns=1, homogeneous=True)
for col in range(1,10):
for row in range(1,5):
event_box = gtk.EventBox()
label_day = gtk.Label("")
label_day.set_size_request(18,18)
label_day.show()
event_box.add(label_day)
event_box.modify_bg(gtk.STATE_NORMAL,
event_box.get_colormap().alloc_color("orange"))
event_box.set_border_width(25)
event_box.show()
table_layout.attach(event_box, 0, col, 0, row, 0,0,0,0)
vbox_app.pack_start(table_layout)
app_window.add(vbox_app)
app_window.show_all()
return
def main():
gtk.main()
return 0
if __name__ == "__main__":
MyProgram()
main()
感謝您的幫助和所有的提示!不幸的是,對於這個項目我不得不使用GTK 2,但下次我肯定會檢查GTK 3。 – rednammoc