GtkWidget的realize与show
pygtk中,几乎每个widget都可以调用show来显示,但除了show之外,还有一个realize接口,realize叫做实例化,负责分配窗口资源,但不在屏幕上显示。如果没有调realize,顶层窗口的show也会自动调用所有子控件的realize,所以一般情况下不需要调用realize,当在show一个控件之前需要这个用到这个控件的window时,才需要提前realize。
show这个名字似乎起的不好,它对于顶层控件和子控件含义是不同的,对于顶层控件,show就是字面含义,但对于子控件,show只是标记它"将会被显示",并不真的显示它,这样的好处是整个窗口是一次性显示的,而不论show的先后调用关系,虽然子控件的show并不能显示控件,但还是必须调用的,否则它的缺省状态会导致它被hide。
还有一个接口是show_all,意义是显示所有子控件,但它有个明显的副作用,就是即使你设置了某个子控件为不显示,show_all会覆盖这些设置,所以我不喜欢用这个接口,除非是比较简单的对话框。
show这个名字似乎起的不好,它对于顶层控件和子控件含义是不同的,对于顶层控件,show就是字面含义,但对于子控件,show只是标记它"将会被显示",并不真的显示它,这样的好处是整个窗口是一次性显示的,而不论show的先后调用关系,虽然子控件的show并不能显示控件,但还是必须调用的,否则它的缺省状态会导致它被hide。
还有一个接口是show_all,意义是显示所有子控件,但它有个明显的副作用,就是即使你设置了某个子控件为不显示,show_all会覆盖这些设置,所以我不喜欢用这个接口,除非是比较简单的对话框。

0 Comments:
发表评论
<< Home