标签: pygtk

在Gtk +中绘制图像的最快方法是什么?

我有一个图像/ pixbuf,我想绘制到gtk.DrawingArea并经常刷新,所以blitting操作必须快.这样做很简单:

def __init__(self):
  self.drawing_area = gtk.DrawingArea()
  self.image = gtk.gdk.pixbuf_new_from_file("image.png")

def area_expose_cb(self, area, event):
  self.drawing_area.window.draw_pixbuf(self.gc, self.image, 0, 0, x, y)
Run Code Online (Sandbox Code Playgroud)

然而,导致性能非常慢,可能是由于pixbuf不是显示器颜色格式.

我也没有在开罗取得成功,因为它似乎仅限于24/32位格式,并且没有16位格式(FORMAT_RGB16_565不受支持和弃用).

在Gtk +中快速绘制图片有哪些替代方案?

python gtk pygtk cairo

8
推荐指数
1
解决办法
3446
查看次数

PHP桌面应用程序

我有很多年开发PHP Web应用程序的经验,最近也开始深入研究Python.最近我一直对进入桌面应用程序感兴趣,但在该领域绝对没有经验.我看过很少关于PHP-gtk的文章,并想知道它是否真的是一个很好的领域.
我真正想要的是能够快速开发一些体面的中小型应用程序,并能够在Linux和Windows中部署它们.Python或PHP中的东西会很棒(但如果它有很大的优点,我会很高兴学到别的东西).

你们推荐什么?

谢谢

php python gtk desktop pygtk

8
推荐指数
1
解决办法
1562
查看次数

Windows上的Python + webkit + gtk

我正在尝试这个剧本: PY WYSIWYG

它说我需要Gtk和WebKit.我想这就是我需要的:

所以我下载了WebKit,但我得到了一个文件夹,而不是安装程序或安装信息.我将它移动到python文件夹中,或者我该怎么办?

windows gtk pygtk webkit

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

PyGTK:如何使图像自动缩放以适合它的父窗口小部件?

我有一个PyGTK应用程序,需要加载未知大小的图像,但我遇到的问题是,如果图像非常大或非常小,窗口布局变得扭曲和难以使用.我需要一些方法使图像自动缩放以适合其父窗口小部件.不幸的是,经过一些研究后,似乎没有代码,内置或其他方式,可以完成我正在寻找的东西.

我怎么能写点什么呢?我原本以为有人会为此编写一些代码; 有什么我错过了吗?

python gtk pygtk image

8
推荐指数
1
解决办法
6171
查看次数

TreeViewColumn标头中的PyGTK Entry小部件

如何gtk.Entrygtk.TreeViewColumn标题/标题中使小部件可聚焦或可编辑?我试过这个:

# Create tree-view.
treeview = gtk.TreeView()

#...

# Create column.
renderer = gtk.CellRendererText()
column = gtk.TreeViewColumn(None, renderer, text=0)

# Set column header.
header = gtk.VBox()

title = gtk.Label("Column")
header.pack_start(title)

filter = gtk.Entry()
#...
header.pack_start(filter)

header.show_all()
column.set_widget(header)

# Add column
treeview.append_column(column)
Run Code Online (Sandbox Code Playgroud)

但是列标题中的Entry小部件不可编辑且不会聚焦.我已经尝试将'clickable'设置为TrueFalse.我在Ubuntu 10.04上使用pygtk 2.21.0-0ubuntu1和libgtk 2.22.0-0ubuntu1.任何帮助将不胜感激.

编辑:

问题源于GtkTreeViewColumn标头的显示方式.标题小部件放在GtkAlignment其父级是GtkHBox其父级是GtkButton其父级最终的父级GtkTreeView.该GtkButton是拦截和阻止我GtkEntry被聚焦和接收鼠标输入.

python gtk pygtk gtktreeview gtkentry

8
推荐指数
1
解决办法
2265
查看次数

如何在OSX上安装GTK +/PyGTK?

我正在尝试在OSX 10.6(雪豹)上安装PyGTK.我已经关注了这个话题PyGTK for Mac OS X在哪里?.

当我运行最后一个命令时:

~/.local/bin/jhbuild build meta-gtk-osx-python
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

*** Checking out gtk+ *** [10/18]
*** Configuring gtk+ *** [10/18]
autoreconf -fis && ./configure --prefix /Users/smu/gtk/inst --libdir '/Users/smu/gtk/inst/lib' --with-gdktarget=quartz --disable-static
libtoolize: putting auxiliary files in `.'.
libtoolize: linking file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: linking file `m4/libtool.m4'
libtoolize: linking file `m4/ltoptions.m4'
libtoolize: linking file `m4/ltsugar.m4'
libtoolize: linking file `m4/ltversion.m4'
libtoolize: linking file `m4/lt~obsolete.m4'
configure.in:150: error: possibly undefined macro: dnl
      If this token and …
Run Code Online (Sandbox Code Playgroud)

gtk macos pygtk

8
推荐指数
1
解决办法
2911
查看次数

将其他小部件放在gtk.Menu中

我希望能够在我的gtk.Menu中放置一个gtk.ProgressBar,但由于菜单只需要gtk.MenuItems及其子类,我所做的就是采用一个普通的gtk.MenuItem并尝试添加我的进度条作为一个孩子.由于gtk.MenuItem是gtk.Bin的子类,因此它应该能够容纳任何小部件.

例:

menu = gtk.Menu()

item = gtk.MenuItem()

button = gtk.ProgressBar()
button.pulse()
button.show()

item.add(button)
item.show()

menu.append(item)
Run Code Online (Sandbox Code Playgroud)

没有pygtk抱怨,这运行得很好.但是,我的进度条根本没有显示:

gtk.Menu的屏幕截图

如果我用gtk.Label替换进度条,它就显示得很好.

现在问我的问题:

  1. 我如何知道它将采用哪些小部件?
  2. 我怎么欺骗它让我把其他小部件放在那里?

python pygtk appindicator

8
推荐指数
2
解决办法
3668
查看次数

以编程方式关闭gtk窗口

如果您在GTK中有一个子窗口并且想要以编程方式关闭它(例如,按下保存按钮或转义键),是否有一种关闭窗口的首选方法?

例如,

window.destroy()
# versus
window.emit('delete-event')
Run Code Online (Sandbox Code Playgroud)

gtk pygtk

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

对pygtk3的反思可能吗?

python的一大优点是能够对方法和函数进行内省.举个例子,要获得函数签名,math.log你可以(在ipython中)运行:

In [1]: math.log?
Type:       builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form:    <built-in function log>
Namespace:  Interactive
Docstring:
    log(x[, base])

    Return the logarithm of x to the given base.
    If the base not specified, returns the natural logarithm (base e) of x.
Run Code Online (Sandbox Code Playgroud)

并查看该功能的参数x和可选项base.

使用新的gtk3和自动生成的pygobject绑定,我可以在所有示例中尝试只获取(*args, **kwargs)每个gtk方法的参数.

示例:Label.set_text 需要一个字符串:

In [1]: from gi.repository import Gtk
In [2]: mylabel = Gtk.Label("hello")
In [3]: mylabel.set_text?
Type:       instancemethod
Base Class: <type 'instancemethod'>
String Form: …
Run Code Online (Sandbox Code Playgroud)

python pygtk pygobject gtk3

8
推荐指数
1
解决办法
949
查看次数

在菜单中显示gtk.Calendar?

日历菜单截图

我想构建一个上下文菜单,其中包含用于选择日期的菜单项.(用例是在树视图中选择一组项目,然后为所有项目设置新的截止日期.)

由于menuitem是Gtk.Bin,我可以指定任何小部件来代替标签.但是,我似乎无法与小部件进行交互.如果我单击菜单上的任何位置,菜单项将获得单击.因此,我无法选择特定日期,也无法导航数月或数年.如何让日历获取鼠标活动?

此外,日历外部还有外部填充物,当悬停在日历上时会变成橙色.如何删除填充和/或不执行橙色突出显示?

#!/usr/bin/env python

import gobject
import pygtk
pygtk.require('2.0')
import gtk
import time


class ContextMenu(gtk.Menu):
    def __init__(self):
        gtk.Menu.__init__(self)

    def add_calendar_submenu_item(self, text, callback, uuids, data=None):
        calendar = gtk.Calendar()
        calendar.show()
        calendar_item = gtk.MenuItem()
        calendar_item.add(calendar)
        calendar_item.show()

        submenu = gtk.Menu()
        submenu.append(calendar_item)
        submenu_item = gtk.MenuItem("%s..." %(text))
        submenu_item.set_submenu(submenu)
        submenu_item.show()
        submenu_item.connect("activate", self.on_calendar_activate)
        self.append(submenu_item)

    def on_calendar_activate(self, widget):
        print "activate"


if __name__ == "__main__":
    class CalendarExample:
        def __init__(self):
            window = gtk.Window(gtk.WINDOW_TOPLEVEL)
            window.set_title("Calendar Example")
            window.set_border_width(5)
            window.set_size_request(200, 100)
            window.set_resizable(False)
            window.stick()
            window.connect("destroy", lambda x: gtk.main_quit())

            menu = ContextMenu()
            menu.add_calendar_submenu_item("date", …
Run Code Online (Sandbox Code Playgroud)

python gtk ubuntu pygtk

8
推荐指数
1
解决办法
2628
查看次数

标签 统计

pygtk ×10

gtk ×8

python ×7

appindicator ×1

cairo ×1

desktop ×1

gtk3 ×1

gtkentry ×1

gtktreeview ×1

image ×1

macos ×1

php ×1

pygobject ×1

ubuntu ×1

webkit ×1

windows ×1