标签: pygtk

如何在Pango标记中转义字符?

我的程序有一个gtk.TreeView显示一个gtk.ListStore.在gtk.ListStore包含这样的字符串:

"<span size='medium'><b>"+site_title+"</b></span>"+"\n"+URL
Run Code Online (Sandbox Code Playgroud)

URL(显然)URL字符串在哪里.有时会有字符URL导致pango无法解析标记.

有没有办法逃脱URL作为一个整体,以便pango将忽略它,所以它将按字面显示?如果没有,我应该如何"逃避"URL中的特殊字符?

python gtk pygtk pango

10
推荐指数
2
解决办法
3262
查看次数

为什么我的简单python gtk + cairo程序运行如此缓慢/断断续续?

我的程序绘制了在窗口上移动的圆圈.我想我必须缺少一些基本的gtk/cairo概念,因为它似乎对我正在做的事情运行得太慢/断断续续.有任何想法吗?谢谢你的帮助!

#!/usr/bin/python

import gtk
import gtk.gdk as gdk
import math
import random
import gobject

# The number of circles and the window size.
num = 128
size = 512

# Initialize circle coordinates and velocities.
x = []
y = []
xv = []
yv = []
for i in range(num):
    x.append(random.randint(0, size))
    y.append(random.randint(0, size))
    xv.append(random.randint(-4, 4))
    yv.append(random.randint(-4, 4))


# Draw the circles and update their positions.
def expose(*args):
    cr = darea.window.cairo_create()
    cr.set_line_width(4)
    for i in range(num):
        cr.set_source_rgb(1, 0, 0) …
Run Code Online (Sandbox Code Playgroud)

python gtk animation pygtk cairo

10
推荐指数
1
解决办法
4483
查看次数

使用PyGTK右键单击菜单(上下文菜单)

所以我对Python仍然相当新,并且已经学习了几个月,但我想弄清楚的一件事就是说你有一个基本窗口......

#!/usr/bin/env python

import sys, os
import pygtk, gtk, gobject

class app:

   def __init__(self):
    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    window.set_title("TestApp")
    window.set_default_size(320, 240)
    window.connect("destroy", gtk.main_quit)
    window.show_all()

app()
gtk.main()
Run Code Online (Sandbox Code Playgroud)

我想在这个窗口右键单击,然后弹出一个菜单,如警报,复制,退出,无论我想放下什么.

我怎么做到这一点?

python gtk pygtk menu pygobject

10
推荐指数
1
解决办法
6020
查看次数

pyGTK应用程序中的pyGame

在PyGTK应用程序中使用PyGame(SDL)的最佳方法是什么?

我正在寻找一种方法,允许我在GTK窗口中有一个绘图区域,同时能够管理GTK和SDL事件.

python gtk pygame pygtk sdl

9
推荐指数
2
解决办法
4433
查看次数

PyGTK或PyQT是制作GTK原生Python应用程序的首选吗?

我是一名网络开发人员,希望能够在Python中为Ubuntu编写一个小桌面应用程序.我在网上搜索PyGTK与PyQT的优点和缺点,并没有真正找到任何好的比较.

你们有什么感想?它们是否都在GNOME系统上生成外观小部件?一个比另一个更容易使用吗?任何意见都会很好.

对不起主观问题.

python ubuntu pygtk pyqt

9
推荐指数
2
解决办法
3088
查看次数

PyGTK:动态标签包装

这是一个已知的错误/问题,当父级更改时,GTK中的标签不会动态调整大小.这是一个非常烦人的小细节之一,如果可能的话,我想破解它.

我按照16软件的方法进行了操作,但根据免责声明,您无法将其调整得更小.所以我尝试了其中一个注释(set_size_request信号回调中的调用)中提到的技巧,但这导致了某种无限循环(尝试并看到).

有没有人有任何其他想法?

(您不能仅在调用期间阻止信号,因为正如print语句似乎表明的那样,问题在函数离开后开始.)

代码如下.你可以看到我的意思,如果你运行它并尝试调整窗口大小然后更小.(如果要查看原始问题,请在"连接到大小分配信号"之后注释掉该行,运行它,然后将窗口调整得更大.)

Glade文件("example.glade"):

<?xml version="1.0"?>
<glade-interface>
  <!-- interface-requires gtk+ 2.16 -->
  <!-- interface-naming-policy project-wide -->
  <widget class="GtkWindow" id="window1">
    <property name="visible">True</property>
    <signal name="destroy" handler="on_destroy"/>
    <child>
      <widget class="GtkLabel" id="label1">
        <property name="visible">True</property>
        <property name="label" translatable="yes">In publishing and graphic design, lorem ipsum[p][1][2] is the name given to commonly used placeholder text (filler text) to demonstrate the graphic elements of a document or visual presentation, such as font, typography, and layout. The lorem ipsum …
Run Code Online (Sandbox Code Playgroud)

pygtk

9
推荐指数
1
解决办法
3800
查看次数

如何用PyGTK/Gtkbuilder重复显示一个Dialog?

我创建了一个PyGTK应用程序,当用户按下按钮时会显示一个Dialog.该对话框在我的__init__方法中加载:

builder = gtk.Builder()
builder.add_from_file("filename")
builder.connect_signals(self) 
self.myDialog = builder.get_object("dialog_name")
Run Code Online (Sandbox Code Playgroud)

在事件处理程序中,对话框随命令一起显示self.myDialog.run(),但这只能运行一次,因为在run()对话框被自动销毁之后.如果我再次单击该按钮,应用程序将崩溃.

我读到有一种方法可以使用show()而不是run()对话框没有被销毁的地方,但我觉得这对我来说不是正确的方法因为我希望对话框能够以模态方式运行并且仅在用户之后将控制权返回给代码关闭了它.

有没有一种简单的run()方法可以使用gtkbuilder 使用该方法重复显示对话框?我尝试使用gtkbuilder重新加载整个对话框,但这似乎没有用,对话框缺少所有子元素(我更喜欢在程序开始时只使用构建器一次).


[解决方案](编辑)
正如下面的答案所指出的那样,使用hide()诀窍.我首先想到你仍然需要捕捉"删除事件",但这实际上没有必要.一个有效的简单示例是:


import pygtk
import gtk

class DialogTest:

    def rundialog(self, widget, data=None):
        self.dia.show_all()
        result = self.dia.run() 
        self.dia.hide()


    def destroy(self, widget, data=None):
        gtk.main_quit()

    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect("destroy", self.destroy)

        self.dia = gtk.Dialog('TEST DIALOG', self.window, 
           gtk.DIALOG_MODAL  | gtk.DIALOG_DESTROY_WITH_PARENT)
        self.dia.vbox.pack_start(gtk.Label('This is just a Test'))


        self.button = gtk.Button("Run Dialog")    
        self.button.connect("clicked", self.rundialog, None)
        self.window.add(self.button)
        self.button.show()
        self.window.show() …
Run Code Online (Sandbox Code Playgroud)

python gtk pygtk dialog gtkbuilder

9
推荐指数
1
解决办法
7089
查看次数

在HPaned问题中调整gtk TreeView的大小

我在hpaned的左侧有一个树视图,但是当我尝试向左移动栏以使树视图小于其自动大小而不是调整树视图大小时,它将整个程序窗口向右扩展.有想法该怎么解决这个吗?

来源的相关部分如下:

对于hpaned.

    self.vpan = gtk.VPaned()
    self.hpan = gtk.HPaned()
    self.vpan.show()
    self.hpan.show()

    self.vBox1.pack_end(self.hpan, True, True, 0)
    self.hpan.pack2(self.vpan,True, True)
Run Code Online (Sandbox Code Playgroud)

而对于树视图.

    self.ftree = gtk.TreeStore(str,str,str)
    self.treefill(None, os.path.abspath(os.path.dirname(__file__)))

    self.tree = gtk.TreeView(self.ftree)
    self.tvcolumn = gtk.TreeViewColumn('Project')
    self.tree.append_column(self.tvcolumn)
    self.cellpb = gtk.CellRendererPixbuf()
    self.celltxt = gtk.CellRendererText()

    self.tvcolumn.pack_start(self.cellpb,False)
    self.tvcolumn.pack_start(self.celltxt,True)

    self.tvcolumn.set_attributes(self.cellpb, stock_id=0)
    self.tvcolumn.set_attributes(self.celltxt, text=1)
    self.tvcolumn.set_resizable(True)

    self.hpan.pack1(self.tree,True,True)
    self.tree.show()
Run Code Online (Sandbox Code Playgroud)

python gtk pygtk

9
推荐指数
1
解决办法
1136
查看次数

把glade接口放在python中

我已经在林间空间做了一个gui,我想把它放在一个python程序中.我正在调整我在网上找到的教程中的说明,以加载我的glade文件(http://www.pygtk.org/articles/pygtk-glade-gui/Creating_a_GUI_using_PyGTK_and_Glade.htm).当我遇到问题时,我尝试了一些基本的(一个按钮),调用它与教程中的相同,并复制粘贴代码,但它仍然无效.我还看了一下(http://www.linuxjournal.com/article/6586?page=0,2),它的功能稍有不同("self.wTree = gtk.glade.XML(gladefile, windowname)"而不是没有windowname",并实现了与我的等价物并没有解决它.我肯定有pygtk工作,我之前没有使用glade制作的东西,它工作得很好.我得到的错误是:

/usr/share/themes/NOX/gtk-2.0/gtkrc:233: Murrine configuration option "gradients" 
 is no longer supported and will be ignored.

(helloWorld.py:9804): libglade-WARNING **: Expected <glade-interface>.  Got    
 <interface>.

(helloWorld.py:9804): libglade-WARNING **: did not finish in PARSER_FINISH state
Traceback (most recent call last):
File "helloWorld.py", line 31, in <module>
hwg = HellowWorldGTK()
File "helloWorld.py", line 22, in __init__
self.wTree = gtk.glade.XML(self.gladefile) 
RuntimeError: could not create GladeXML object
Run Code Online (Sandbox Code Playgroud)

我正在运行xubuntu 11.04.当任何gtk应用程序打开时,Murrine配置会出现,但是我将它包括在内以防它相关.这是我从教程中获取的代码(但不起作用)

#!/usr/bin/env python

import sys
try:
    import pygtk
    pygtk.require("2.0")
except:
    pass
try:
    import gtk
    import gtk.glade
except: …
Run Code Online (Sandbox Code Playgroud)

python gtk pygtk glade

9
推荐指数
1
解决办法
1万
查看次数

ImportError:没有名为gi.repository Mac OS X的模块

我 在Mac OS X上安装virt-manager0.10.0

首先我用自制软件安装了python,libvirt,gtk + 3,pygtk和其他依赖项

但是当我运行virt-manager时,我遇到了这个错误

from gi.repository import GObject
ImportError: No module named gi.repository
Run Code Online (Sandbox Code Playgroud)

当我在python命令行中运行此导入时,我得到相同的错误.但是当我尝试时没有错误 import gtk

我认为问题是自制的pygtk版本不使用gtk + 3并使用gtk2,因为我们可以在这里看到gi.repository Windows 只有gtk + 3使用该语法.

python gtk homebrew pygtk

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

pygtk ×10

python ×9

gtk ×8

animation ×1

cairo ×1

dialog ×1

glade ×1

gtkbuilder ×1

homebrew ×1

menu ×1

pango ×1

pygame ×1

pygobject ×1

pyqt ×1

sdl ×1

ubuntu ×1