2014-01-15 118 views
-2

我必须使用GtkGrid,因为我需要为每个项目绘制一个矩形。 (我将绘图区域添加到每个GtkGrid的细胞,并绘制由cairographics库中的矩形)Python解释器,Pygtk和GtkGrid

但是有一个问题:Python 2.7版不支持GtkGrid,所以我网上冲浪,我只是改变了第一线我的文件(并安装了python3.3)。

#!/usr/bin/python3.3 

try: 
    import pygtk 
    pygtk.require("2.0") 
except: 
    print("PyGtk Not Availible") 
    sys.exit(1) 

try: 
    import gtk 
    import gtk.glade 
except: 
    print("GTK Not Availible") 
    sys.exit(1) 

现在却无法拯救了的PyGTK或GTK库..与python2.7所有的工作很好.. 也许最好的解决办法是,以避免新的Python解释和改变GtkGrid成别的东西..

请帮助我

编辑:: 只有剪切,粘贴,从PyGTK的实例的实例

#!/usr/bin/python3.3 

# example drawingarea.py 

import pygtk 
pygtk.require('2.0') 
import gtk 
import operator 
import time 
import string 

class DrawingAreaExample: 
    def __init__(self): 
     window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
     window.set_title("Drawing Area Example") 
     window.connect("destroy", lambda w: gtk.main_quit()) 
     self.area = gtk.DrawingArea() 
     self.area.set_size_request(400, 300) 
     self.pangolayout = self.area.create_pango_layout("") 
     self.sw = gtk.ScrolledWindow() 
     ... 

使用Python 2.7它的工作原理,与Python 3.3:No module named 'pygtk'

+0

我不明白:你为什么说“现在它不能拯救Pygtk或GTK库。” ? – maurelio79

+0

因为异常被提出并被打印出来“PyGtk不可用” – FrancescoN

+0

在我的情况下没有异常提出,奇怪...尝试没有'尝试 - 除了',并在这里粘贴错误。但是请等待,从shell运行:'python3.3 script.py'? – maurelio79

回答

0

只是为了明确这一点:你必须决定将来要使用的gi.introspection绑定(这是最新的,并且大多是自动生成的)或pygtk包装周围gtk+-2.0(手工制作的,截至目前pygtk3仍在工作,进展,纠正我,如果我错了)。

混合这些会让你进一步或稍后陷入困境。


而且您最初的问题是,GtkGrid(的gtk+-3.0一部分)是gi.introspection绑定它(通常)需要Python 3.x.y的一部分,而你Python 2.7.x使用pygtk2。更改为Python 3.3只是使绑定对您有用。


gtk2GtkGrid被称为GtkTable,看到https://developer.gnome.org/gtk2/stable/GtkTable.html

+0

谢谢,我想我会使用GtkTable – FrancescoN

+0

你能解释一下“混合这些将是我让你进一步或以后遇到麻烦。“?或者也许提供一些关于此的链接?谢谢! – maurelio79

+0

只是一个例子,gtk2和gtk3使用完全不同的绘图机制,小部件的分配算法,并可能会给你绘制毛刺。只是一个例子。此外,API可能已经发生变化(即消耗参数与用户必须采取的清理方式)。 – drahnr

-1

试试这个:

#!/usr/bin/env python 
# -*- coding: utf-8; -*- 
from gi.repository import Gtk 
grid = Gtk.Grid() 

您需要使用GTK + 3,而不是python3.3(为了有一个Gtk.Grid)...如果我明白你的意思...

编辑。

+0

它工作,感谢 但它是安全的,为什么只是**进口GTK **不足够了吗?这是如何工作的? – FrancescoN

+1

因为gtk来自GTK + 2并且来自gi.repository import Gtk来自GTK + 3.所以如果你需要只存在于GTK + 3中的小部件,你需要使用'from gi.repository import Gtk'我是Gtk开发新手,但我认为这是解释。 – maurelio79

+1

通过这样做,您将为全新的问题打开一个虫洞,请参阅我的答案以获取详细解释。 – drahnr