我想保存GTK窗口的外观,以及它包含的所有按钮和其他小部件到PNG或PDF文件.开罗支持在这样的表面上绘画.我可以以某种方式要求GTK小部件在开罗表面上绘制自己吗?我非常感谢代码示例,因为我是GTK和Cairo的新手.Python是我的首选语言.
或者"如何向GtkTextView添加可见(薄)边框"?它有可能吗?
先感谢您.
我试图将PyGTK中的一些小例子移植到新的PyGobject绑定中,但是我遇到了一个带有弹出菜单的障碍,尽管没有错误,右键单击没有显示菜单,这是代码,
from gi.repository import Gtk
class aStatusIcon:
def __init__(self):
self.statusicon = Gtk.StatusIcon()
self.statusicon.set_from_stock(Gtk.STOCK_HOME)
self.statusicon.connect("popup-menu", self.right_click_event)
window = Gtk.Window()
window.connect("destroy", lambda w: Gtk.main_quit())
window.show_all()
def right_click_event(self, icon, button, time):
menu = Gtk.Menu()
about = Gtk.MenuItem()
about.set_label("About")
quit = Gtk.MenuItem()
quit.set_label("Quit")
about.connect("activate", self.show_about_dialog)
quit.connect("activate", Gtk.main_quit)
menu.append(about)
menu.append(quit)
menu.show_all()
#menu.popup(None, None, gtk.status_icon_position_menu, button, time, self.statusicon) # previous working pygtk line
menu.popup(None, None, None, Gtk.StatusIcon.position_menu, button, time) #i assume this is problem line
def show_about_dialog(self, widget):
about_dialog = Gtk.AboutDialog()
about_dialog.set_destroy_with_parent(True)
about_dialog.set_name("StatusIcon Example")
about_dialog.set_version("1.0")
about_dialog.set_authors(["Andrew …Run Code Online (Sandbox Code Playgroud) 我正在使用Windows XP上的一体化安装程序中的 Python 2.6和PyGTK 2.22.6 ,尝试为我的应用程序构建单文件可执行文件(通过py2exe).
我的问题是,当我将我的应用程序作为脚本运行时(即,没有内置到.exe文件中,就像一个松散的.py文件集合),它使用看起来像本机的Windows主题,但是当我运行构建的exe时,我看到默认GTK主题.
我知道可以通过将一堆文件复制到distpy2exe创建的目录中来解决这个问题,但我读过的所有内容都涉及手动复制数据,而我希望这是构建过程的自动部分.此外,关于该主题的所有内容(包括FAQ)都已过时 - PyGTK现在保留其文件C:\Python2x\Lib\site-packages\gtk-2.0\runtime\...,只是复制lib和etc目录不能解决问题.
我的问题是:
我希望能够以编程方式找到GTK运行时数据,setup.py而不是硬编码路径.我该怎么做呢?
我需要包含哪些最小资源?
更新:我可能通过反复试验几乎回答了#2.要使"wimp"(即MS Windows)主题起作用,我需要以下文件:
runtime\lib\gtk-2.0\2.10.0\engines\libwimp.dll
runtime\etc\gtk-2.0\gtkrc
runtime\share\icons\*
runtime\share\themes\MS-Windows
Run Code Online (Sandbox Code Playgroud)
...没有runtime前缀,但具有相同的目录结构,直接坐在distpy2exe生成的目录中.但是,在什么地方2.10.0来的,因为gtk.gtk_version是(2,22,0)?
我开始使用pyGTK +了解使用python和matplotlib进行交互式绘图.因此,我看了一下matplotlib网站上给出的例子.
这是本守则的简短内容:
#!/usr/bin/env python
"""
Example of embedding matplotlib in an application and interacting with
a treeview to store data. Double click on an entry to update plot
data
"""
import pygtk
pygtk.require('2.0')
import gtk
from gtk import gdk
import matplotlib
matplotlib.use('GTKAgg') # or 'GTK'
from matplotlib.backends.backend_gtk import FigureCanvasGTK as FigureCanvas
from numpy.random import random
from matplotlib.figure import Figure
Run Code Online (Sandbox Code Playgroud)
我尝试在终端中运行此脚本我收到以下错误:
Traceback (most recent call last):
File "gtk_spreadsheet.py", line 15, in <module>
from matplotlib.backends.backend_gtk import FigureCanvasGTK …Run Code Online (Sandbox Code Playgroud) Poppler是一个基于xpdf-3.0代码库的PDF渲染库.我已经从官方网站http://poppler.freedesktop.org/下载了tar.xz文件 但我不知道如何处理这个文件
是否有任何安装或运行命令?
PS - 我是linux的新手,所以我对它还不是很了解..
所以我对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 2.7中导入gtk时出现以下错误:
>>> import gtk
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "gtk/__init__.py", line 40, in <module>
from gtk import _gtk
File "/usr/lib/python2.7/site-packages/cairo/__init__.py", line 1, in <module>
from ._cairo import * # noqa: F401,F403
ImportError: /usr/lib/python2.7/site-packages/cairo/_cairo.so: undefined symbol: cairo_tee_surface_index
尝试从Python 3.6导入cairo时出现以下错误:
>>> import cairo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/site-packages/cairo/__init__.py", line 1, in <module>
from ._cairo import * # noqa: F401,F403
ImportError: /usr/lib/python3.6/site-packages/cairo/_cairo.cpython-36m-x86_64-linux-gnu.so: undefined symbol: cairo_tee_surface_index
我按照BLFS书中给出的顺序编译和构建模块.我也按照书中的说明安装了cairo,并启用了tee.
我的系统是LFS,4.14.4内核版本,Python …
pygtk ×10
python ×7
gtk ×4
pygobject ×2
cairo ×1
function ×1
glade ×1
gtkentry ×1
gtktextview ×1
linux ×1
matplotlib ×1
menu ×1
poppler ×1
py2exe ×1
pycairo ×1
pypdf ×1
python-2.7 ×1
python-3.6 ×1
time ×1
ubuntu ×1