我的程序有一个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中的特殊字符?
我的程序绘制了在窗口上移动的圆圈.我想我必须缺少一些基本的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仍然相当新,并且已经学习了几个月,但我想弄清楚的一件事就是说你有一个基本窗口......
#!/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)
我想在这个窗口右键单击,然后弹出一个菜单,如警报,复制,退出,无论我想放下什么.
我怎么做到这一点?
在PyGTK应用程序中使用PyGame(SDL)的最佳方法是什么?
我正在寻找一种方法,允许我在GTK窗口中有一个绘图区域,同时能够管理GTK和SDL事件.
我是一名网络开发人员,希望能够在Python中为Ubuntu编写一个小桌面应用程序.我在网上搜索PyGTK与PyQT的优点和缺点,并没有真正找到任何好的比较.
你们有什么感想?它们是否都在GNOME系统上生成外观小部件?一个比另一个更容易使用吗?任何意见都会很好.
对不起主观问题.
这是一个已知的错误/问题,当父级更改时,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应用程序,当用户按下按钮时会显示一个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) 我在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) 我已经在林间空间做了一个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) 我 在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使用该语法.