用PyGtk的做图形界面
基本上用pygtk弄好界面,而主要的函数部分 则用纯C写生成so或dll(linux下用so,win下用dll)链接库,在python里用ctypes调用 用C写的 函数.为什么这么弄?因为gtk直接用纯C弄界面太烦了。。。而python是一个很好的粘合剂.同时python使用很简单...
如果是linux大多数情况不用装python和pygtk,因为他自带了。
如果是win系统就要下载下面两个:
A.python下载地址(http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi)
B.pygtk的ALL in ONE包下载地址
(http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.24/pygtk-all-in-one-2.24.1.win32-py2.7.msi) 在win下也基本不必要配置环境变量之类的,直接把python和pygtk依次装了,就ok了 发个最简单的例子
# coding=gbk
import pygtk
pygtk.require('2.0')
import gtk
import random
greetings = ["Hello World", "Witaj wiecie", u"世界に今日は",u"你好,世界"]
def choose_greeting (greets):
return greets
def cb_clicked( button,label):
label.set_text(choose_greeting(greetings))
#下面创建界面对象
window = gtk.Window ()
window.set_default_size(200, 200)
vbox = gtk.VBox ()
button = gtk.Button("Hello World")
label = gtk.Label (choose_greeting (greetings))
#下面开始使用容器布局
window.add(vbox)
vbox.add(label)
vbox.pack_start(button, False, False)
#下面关联 相应事件 与 相应对象的methods
window.connect("delete-event", lambda a,b: gtk.main_quit())
button.connect("clicked", cb_clicked, label)
#下面两句就是显示,和柱塞,每个gtk程序必须有这两句
window.show_all()
gtk.main() 用C语言生成一个简单的dll
#include "stdafx.h"
extern "C" _declspec(dllexport)int sum(int a, int b)
{
return a+b;
}在pygtk中调用这个C函数
# coding=gbk
import pygtk
pygtk.require('2.0')
import gtk
import random
from ctypes import *;
dll=CDLL('dd.dll')
#dll.sum(1,2)
greetings = ["Hello World", "Witaj wiecie", u"世界に今日は",u"你好,世界"]
def choose_greeting (greets):
return greets
def cb_clicked( button,label):
label.set_text(choose_greeting(greetings))
def cb2_clicked(button2 ):
label.set_text(str(dll.sum(2,3)))
window = gtk.Window ()
window.set_default_size(200, 200)
vbox = gtk.VBox ()
button = gtk.Button("Hello World")
label = gtk.Label (choose_greeting (greetings))
button2 = gtk.Button("3+2=")
window.add(vbox)
vbox.add(label)
vbox.pack_start(button, False, False)
vbox.pack_start(button2, False, False)
window.connect("delete-event", lambda a,b: gtk.main_quit())
button.connect("clicked", cb_clicked, label)
button2.connect("clicked", cb2_clicked)
window.show_all()
gtk.main()
优秀文章 这个真是好东西,不错呀。
页:
[1]