Glade Button 控件的使用与Python的事件绑定

附件文件

gtkButton.glade

gtkButton.py

 

试验目的

Glade Button 控件的使用与Python的事件绑定

 

试验过程

打开 Glade

Glade Button 控件的使用与Python的事件绑定_第1张图片 

 

创建窗体

名称:MainWindow

标题:Hello World

创建表格控件(GtkTable)

所有属性默认

创建Lable控件(GtkLabel)

名称:label1

标签: Hello World preen 'Exit' button to exit application

Glade Button 控件的使用与Python的事件绑定_第2张图片

 

创建Button控件(GtkButton)

名称:button1

Glade Button 控件的使用与Python的事件绑定_第3张图片

调整文件格式

菜单 编辑->首选项

将 Project file format 与 gtk catalog属性设置为 图中选项

Glade Button 控件的使用与Python的事件绑定_第4张图片 

 

注:当Project file format 为 GtkBuilder时,Python总是提示没法创建对象,

试验:将文件另存为 GtkBuilder 格式 对比 Libglade的不同点 并手动修改不同的地方,然后再载入Python,检查是否成功

 

Glade Button 控件的使用与Python的事件绑定_第5张图片 

 

 

 

定义 Glade 事件

窗体 destroy 事件

 Glade Button 控件的使用与Python的事件绑定_第6张图片

 

按键 clicked 事件

Glade Button 控件的使用与Python的事件绑定_第7张图片 

 

打开Python Shell

菜单-File-New Windows

 

输入以下代码 (代码解释)

 

1 import os #载入OS

2 import sys #载入 SYS 

3 import pygtk #载入 pygtk 

4 import gtk #载入 gtk 

5 import gtk.glade #载入 gtk.glade

 

6 class gtkButton: #定义一个类

7   wTree = None #声明一个变量

 

8   def delete_event(self,widget,event,data=None): #定义一个方法

        #return gtk.FALSE

9       pass

    

10   def destroy(self,widget,data=None): #定义窗体释放事件

11      gtk.main_quit()

        

12   def __init__( self ):

13      self.wTree = gtk.glade.XML( "gtkButton.glade" ) #载入glade文件

14      self.window=self.wTree.get_widget("MainWindow") #取得窗体对象 “MainWindow”名

#称要与Glade一致

#声明事件组 Button clicked 与 窗体destory

15      dic = {"on_button1_clicked":self.btExit,

"on_MainWindow_destroy":self.destroy}        self.wTree.signal_autoconnect(dic)

 

16      self.window.show() #窗体显示

17      gtk.main() #进入窗体循环事件

 

18  def btExit(self, widget): #定义按键onclick事件

19     sys.exit(0) #退出程序

    

 

20 _gtkButton = gtkButton()

 gtkButton.glade

<?xml version="1.0"?>
<glade-interface>
  <!-- interface-requires gtk+ 2.16 -->
  <!-- interface-naming-policy project-wide -->
  <widget class="GtkWindow" id="MainWindow">
    <property name="title" translatable="yes">Hello World</property>
    <property name="window_position">center</property>
    <property name="default_width">640</property>
    <property name="default_height">480</property>
    <signal name="destroy" handler="on_MainWindow_destroy"/>
    <child>
      <widget class="GtkTable" id="table1">
        <property name="visible">True</property>
        <property name="n_rows">3</property>
        <property name="n_columns">3</property>
        <child>
          <widget class="GtkButton" id="button1">
            <property name="label" translatable="yes">Exit
</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <signal name="clicked" handler="on_button1_clicked"/>
          </widget>
          <packing>
            <property name="left_attach">1</property>
            <property name="right_attach">2</property>
            <property name="top_attach">1</property>
            <property name="bottom_attach">2</property>
          </packing>
        </child>
        <child>
          <widget class="GtkLabel" id="label1">
            <property name="visible">True</property>
            <property name="label" translatable="yes">Hello World
preen 'Exit' button to exit application</property>
          </widget>
          <packing>
            <property name="left_attach">1</property>
            <property name="right_attach">2</property>
          </packing>
        </child>
        <child>
          <placeholder/>
        </child>
        <child>
          <placeholder/>
        </child>
        <child>
          <placeholder/>
        </child>
        <child>
          <placeholder/>
        </child>
        <child>
          <placeholder/>
        </child>
        <child>
          <placeholder/>
        </child>
        <child>
          <placeholder/>
        </child>
      </widget>
    </child>
  </widget>
</glade-interface>



 gtkButton.py

import os
import sys
import pygtk
import gtk
import gtk.glade

class gtkButton:
    wTree = None

    def delete_event(self,widget,event,data=None):
        #return gtk.FALSE
        pass
    
    def destroy(self,widget,data=None):
        gtk.main_quit()
        
    def __init__( self ):
        self.wTree = gtk.glade.XML( "gtkButton.glade" )
        self.window=self.wTree.get_widget("MainWindow")


        dic = {"on_button1_clicked":self.btExit,
               "on_MainWindow_destroy":self.destroy}
        self.wTree.signal_autoconnect(dic)

        self.window.show()
        gtk.main()

    def btExit(self, widget):
        sys.exit(0)
    

_gtkButton = gtkButton()



 

 

 

 

 

 

你可能感兴趣的:(python,button,Glade)