pygtk入门(4)-第三个窗口(带2个按钮)

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-



import pygtk
pygtk.require('2.0')
import gtk

class DeepFuture:         
    def blogurlshow(self):
        print("我的博客是deepfuture.javaeye.com")
    def mynameshow(self):
        print("我是deepfuture")  
    def buttonpress(self,widget, data):
        if data=="blog":
            self.blogurlshow()
        else:
            self.mynameshow()                    
    def delwin_event(self,widget,event,data=None):
        #如果你在"delete_event"信号处理中,返回FALSE,GTK会继续发射这个信号,以供destroy,否则返回TRUE,表示这个信号已经被处理,不需要再处理了,也不需要再发射这个信号了,这意味着你不能destroy窗口。
        print("delete event!")
        return False
    def destroy_win(self,widget,data=None):
        #窗口销毁处理
        print("destroy event!")        
        gtk.main_quit()
    def __init__(self):
        #创建一个新窗口
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("2个按钮的窗口")
        #放入一个不可见的box,然后在里面放2个按钮,并设置回调
        self.buttonbox = gtk.HBox(False, 0)
        self.window.add(self.buttonbox) 
        self.blogbutton = gtk.Button("我的博客")
        self.namebutton = gtk.Button("我的名字")        
        self.blogbutton.connect("clicked", self.buttonpress, "blog")
        self.namebutton.connect("clicked", self.buttonpress, "name") 
        #加入box
        self.buttonbox.pack_start(self.blogbutton, True, True, 0)   
        self.buttonbox.pack_start(self.namebutton, True, True, 0)  
        #显示
        self.blogbutton.show()
        self.namebutton.show()
        self.buttonbox.show()  
        #指定窗口信号与相关处理事件
        self.window.connect("delete_event", self.delwin_event)			
        self.window.connect("destroy", self.destroy_win)
        self.window.set_border_width(15)
        #显示窗口
        self.window.show()
    def main(self):
        gtk.main()
if __name__ == "__main__":	
	deep=DeepFuture()
	deep.main()
 

 

输出:

 

python test.py

我的博客是deepfuture.javaeye.com

我是deepfuture

delete event!

destroy event!

见图:

pygtk入门(4)-第三个窗口(带2个按钮)_第1张图片

 

代码

box.pack_start(child, expand=True, fill=True, padding=0)

 

box.pack_end(child, expand=True, fill=True, padding=0)
表示增加对象到容器box中。

 

创建一个新的横向box,我们使用gtk.HBox(),对于纵向box,我们使用gtk.VBOX(),pack_start() 和 pack_end()用来在BOX这样的容器中放置对象,pack_start()从左到右或从上到下,pack_end()从右到左或从下到上

使用以下形式,将对象放入容器中:

 

box.pack_start(child, expand, fill, padding)

box是容器,child是被放置的对象,expand=True表示放完所有对象后,放入的对象将填充(将自己的尺寸放大)余下的box空间,False则不是。 fill=True表示余下的空间被对象自己填满,为False可以左右调整对象 

 

当创建一个新的box,函数如下:

hbox = gtk.HBox(homogeneous=False, spacing=0)

vbox = gtk.VBox(homogeneous=False, spacing=0)
gtk.HBox() 和gtk.VBox() 的homogeneous参数控制在box中的每个对象是否有相同的大小
sapcing和padding的不同之处在于:
当box被创建时,sapcing起作用,控制对象之前的距离
而对象被加入box时,padding起作用,控制对象的两边距离 


你可能感兴趣的:(gtk)