Python Gtk.Grid中小部件的大小

Python Gtk.Grid中小部件的大小,python,gtk,python-3.4,Python,Gtk,Python 3.4,我正在尝试在9x9 Gtk.Grid中安排多个Gtk.Entry。我用width\u chars=1设置了条目的大小(是的,我希望它们变小)。问题是网格不尊重条目的大小,并对其进行扩展。我尝试用一个Gtk.Box代替网格(我不能在9x9中排列它),它确实呈现了1个宽度的条目。程序是用python3编写的。这是我的代码,我做错了什么 from gi.repository import Gtk wind=Gtk.Window(title='My App') wind.connect('delete-

我正在尝试在9x9 Gtk.Grid中安排多个Gtk.Entry。我用
width\u chars=1
设置了条目的大小(是的,我希望它们变小)。问题是网格不尊重条目的大小,并对其进行扩展。我尝试用一个Gtk.Box代替网格(我不能在9x9中排列它),它确实呈现了1个宽度的条目。程序是用python3编写的。这是我的代码,我做错了什么

from gi.repository import Gtk
wind=Gtk.Window(title='My App')
wind.connect('delete-event',Gtk.main_quit)
grid=Gtk.Grid()
wind.add(grid)
s=[[0 for x in range(9)] for x in range(9)]
for i,j in [(x,y) for x in range(9) for y in range(9)]:
     s[i][j]=Gtk.Entry(width_chars=1,xalign=0.5,text='0')
     grid.attach(s[i][j],j,i,1,1)
wind.show_all()
Gtk.main()
这将输出以下内容:

Edit2:添加了这个问题后,我知道网格从其子级继承了“expand”属性。因此,我尝试将条目的
halign
hexpand
属性设置为
False
,但仍然产生相同的结果。
我也读过关于Glade的文章,并决定尝试通过它来创建相同的布局。但它仍然产生相同的输出。没有办法阻止小部件/网格/窗口像那样扩展吗


Edit3:最初我问并回答这个问题时,我在ubuntu gnome 15.10上。现在我正在使用Ubuntu14.04,我注意到了一些有趣的事情。我尝试了同样的程序,这次结果证明我不需要上面提到的任何一个命令来让它工作。如果有人解释为什么会发生这种情况,这将非常有帮助。

解决方案是为窗口设置默认大小,并将其
hexpand
值设置为
False

wind.set_default_size(200,200)
wind.set_hexpand(False)

当您将小部件添加到GtkWindow时,小部件将占据GtkWindow的全部空间,因为没有其他东西可以控制其大小。因此GtkGrid将拉伸到GtkWindow的大小,因此您的GTKtries将水平拉伸。使用GtkBox是可行的,因为GtkGrid本身并没有设置为占用GtkBox的所有可用空间,所以GtkBox将为GtkGrid提供其“首选”大小,而不是更多。对于您的情况,我不确定解决方案是什么,但是如果没有更多的控件,就无法调整GtkWindow的大小。@andlabs不是这样的。我的意思是使用GtkBox而不是GtkGrid works。我不是说在GtkBox中放置GtkGrid会起作用。我会修改这个问题,让它更清楚。