文档章节

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

miller-he
 miller-he
发布于 2014/12/15 19:18
字数 652
阅读 78
收藏 0

附件文件

gtkButton.glade

gtkButton.py

 

试验目的

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

 

试验过程

打开 Glade

 

 

创建窗体

名称:MainWindow

标题:Hello World

创建表格控件(GtkTable)

所有属性默认

创建Lable控件(GtkLabel)

名称:label1

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

 

创建Button控件(GtkButton)

名称:button1

调整文件格式

菜单 编辑->首选项

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

 

 

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

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

 

 

 

 

 

定义 Glade 事件

窗体 destroy 事件

 

 

按键 clicked 事件

 

 

打开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()



 

 

 

 

 

 

© 著作权归作者所有

miller-he
粉丝 1
博文 3
码字总数 1309
作品 0
广州
其他
私信 提问
Tkinter最佳实践(半小时)

概述: 简介 Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口...

---dgw博客
09/17
0
0
Ubuntu下gtk+glade的搭建与安装

在了解 Glade 之前,我想你应该先了解一下 GTK+ 与 Glade 之间的关系: GTK+ (GIMP Tool Kit) 是一套图形函式库 (GUI, Graphical User Intreface),可用来建立 X Window System 以图形为基础...

L_Hugh
2014/07/07
1K
0
图库--import Tkinter

-- --import------import Tkinter 模块---图库---------------------------------------------------------------------------- -- --图1-------------import------import Tkinter 模块-----......

liapple6
2018/10/28
0
0
python--tkinter(图形开发界面)

  Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.Tk8.0的后续版本可以实现本地窗口风格,并良...

渔单渠
2018/08/14
0
0
七日Python之路--第三天(之不安分 wxPython)

Python有好多个GUI框架,wxPython比较流行,so just do it..... Win下各种不爽,又换Ubuntu 跟着教程做个记事本。视频地址:http://www.pythoner.cn/course/topic/wxPython-gui/ (一)wxpyt...

明天以后
2014/07/24
3.5K
5

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
14
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部