标签: gtk3

如何在Gtk下创建一个cairo-gl表面

我想在linux(fedora 12)下使用GTK 3创建一个窗口,并使用cairo-gl后端在其上绘制一个简单的矩形,为此我想创建一个cairo-gl表面.我怎么能这样做,任何人都可以帮我提供示例代码.

提前致谢.

RC7

cairo gtk3

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

pango属性与pygobject

我有以下代码,使用pygtk:

attr = pango.AttrList()
attr.change(pango.AttrSize((
            50 * window_height / 100) * 1000, 0, -1))
attr.change(pango.AttrFamily("Sans", 0, -1))
attr.change(pango.AttrWeight(pango.WEIGHT_BOLD, 0, -1))
attr.change(pango.AttrForeground(65535, 65535, 65535, 0, -1))

self.label.set_attributes(attr)
Run Code Online (Sandbox Code Playgroud)

我正在尝试将它移植到pygobject,但没有类Pango.AttrFamily,既没有Pango.AttrWeight,也没有Pango.AttrForeground(我无法实例化Pango.AttrSize).

现在的问题是:如何使用pango_attr_size_new,pango_attr_weight_new,pango_attr_family_newpango_attr_foreground_new通过instrospection?

我知道我可以使用标记来做到这一点,但是1.使用属性可以使事情更简单2.我想知道这里发生了什么!我已经花了很多时间试图解决它.

python pango pygobject gtk3

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

使用Pygobject和Python 3从内存数据中显示图像

我在Python 3中有一些RGBA数据,我想在不使用任何额外库的情况下在GTK3窗口中显示它所代表的图像.

我尝试的第一件事是编辑一个Pixbuf例子中的数据(http://developer.gnome.org/gdk-pixbuf/stable/gdk-pixbuf-The-GdkPixbuf-Structure.html#put-pixel - 对不起,我使用时,(C)文档中只允许2个链接Pixbuf.get_pixels().这给了我一个不可变的bytes对象,但显然不会起作用.(gdk-pixbuf错误报告(668084,如果SO允许我将链接到它)涵盖相同的功能,但事情必须改变一点,因为.)

接下来,我尝试使用数据创建一个Pixbuf Pixbuf.new_from_data(),但这也是错误的(参见gdk-pixbuf bug 674691)(是的,那是评论3中的我).

然后我看了一下Cairo:ImageSurface.create_for_data应该这样做,但由于某种原因,这在Python 3绑定中还没有.(我已经尝试过使用Python 2,然后将表面转换为a Pixbuf,然后将其包装在一个中gtk.Image,它可以工作.但我使用的是Python3(即便如此,它也很混乱 - 毕竟Cairo是一个矢量图形库) ).

我找到了一个参考,使用PIL将图像写入PNG文件,然后将其读入Pixbuf,但这很糟糕,使用额外的库,而PIL也不适用于Python 3.

那么......还有其他方法吗?

工作代码

根据Havok的回答,这是一个有效的例子:

from array import array

from gi.repository import Gtk as gtk, GdkPixbuf

pixels = array('H')
for i in range(20):
    for j in range(20):
        px = (i < 10, j >= 10, (i < 10) ^ (j < 10))
        pixels.extend(65535 * c for c in px)

header = b'P6 …
Run Code Online (Sandbox Code Playgroud)

python pygobject python-3.x gtk3

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

如何获得GTK中的默认颜色?

上下文

在GTK 3中,人们可以设置自己的主题.甚至默认主题(Adwaita)也提供两种变体:浅色和暗色.当我正在编写自己的小部件(在python中)时,我需要获取这些颜色以避免在黑色或白色上绘制黑色.

如何访问用户GTK主题的默认颜色?


事情工作

  • GtkSettings 用于提供可接受的gtk-theme-color属性,但它不再存在,并且在文档中没有引用来解释如何替换它.
  • 我不想从另一个小部件中获取该颜色:
    • 是没用的:PyGTK不适用于Python/GTK 3,而且需要另一个小部件.
    • 会更好(PyGObject至少是基于)但是再次,thar需要我从另一个小部件复制样式.

为什么我不想从另一个小部件复制样式?

因为原始的颜色在某处.原则上,我没有看到为什么我应该被迫间接访问它.

而且,如果因为你敢在某处删除单个标签而导致程序崩溃,你会如何反应?如果改变单个标签的颜色实际上改变了其他完全不相关的小部件的颜色,你会如何反应?

我不想要这种惊喜.

python gtk pygobject python-3.x gtk3

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

错误:ld.so:无法预加载来自LD_PRELOAD的对象'libgtk3-nocsd.so.0'

在Ubuntu 18.04上使用Hugo和AWS CLI时遇到此问题。

ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (failed to map segment from shared object): ignored.
Run Code Online (Sandbox Code Playgroud)

这是Ubuntu 18.04,Hugo和AWS CLI的全新安装。

linux ubuntu gtk3 hugo

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

如何在Gtkmm3中使用CssStyleProvider

我用gtkmm3用c ++编程.我想在程序中更改一些字体.我阅读了关于CssStyleProvider,gtkmm文档中的StyleContext以及gtk + documentaion的所有内容,但我无法使其工作,也找不到任何关于它的教程.我是这样想的

Glib::ustring data;
data="GtkMenuBar, GtkMenuItem {font-name: Sans 6}"; /*tried with semi-colon, too*/
Glib::RefPtr<Gtk::CssProvider> asd = Gtk::CssProvider::create();
Glib::RefPtr<Gtk::StyleContext> asd2 = Gtk::StyleContext::create();
asd->load_from_data(data);
asd2->add_provider(asd, 0); /*also tried different priorities*/
Run Code Online (Sandbox Code Playgroud)

也尝试过那样

Glib::ustring data;
data="GtkMenuBar, GtkMenuItem {font-name: Sans 6}"; /*tried with semi-colon, too*/
Glib::RefPtr<Gtk::CssProvider> asd = Gtk::CssProvider::create();
Glib::RefPtr<Gdk::Screen> screen;
Glib::RefPtr<Gtk::StyleContext> asd2 = Gtk::StyleContext::create();
asd->load_from_data(data);
(mainWindow.get())->get_property("screen", screen);
asd2->add_provider(screen, asd, 0); /*also tried different priorities*/
Run Code Online (Sandbox Code Playgroud)

我在运行主窗口之前尝试了这些,然后运行它但我没有运气.任何帮助表示赞赏.

css c++ gtk gtkmm gtk3

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

为python GTK3应用程序创建安装程序

我刚刚使用Gtk3 for GUI开发了一个Python 2.7应用程序.我的问题是,我现在如何为Windows,Mac和Linux(可能是三个不同的安装程序)创建一个安装程序,以便我的最终用户轻松下载应用程序,而无需下载python和GTK等.

我以前从未从python脚本创建过安装程序.我听说有一些工具用于此目的(py2exe?pyinstaller?),但我不知道如何以及如何打包它们以便它能够使用Gtk3.

python gtk cross-platform python-2.7 gtk3

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

GTK3绘图区教程似乎不存在?

我自己一直在学习GTK3,现在我被困在Gtk.DrawingArea上了.与GTK中的大多数小部件和功能一样,似乎缺乏关于此的更新文档和教程.关于我发现的内容(希望这将有助于其他一些失去的googlers)的参考,lazka的自动生成的文档是我最好的资源:

http://lazka.github.io/pgi-docs/Gtk-3.0/classes/index.html

但是,绘图区域页面没有描述的方法.

http://lazka.github.io/pgi-docs/Gtk-3.0/classes/DrawingArea.html

这让我相信我对GTK和这个小部件有一个根本的误解,但我找不到任何解释如何使用它的东西!我能找到的唯一教程是这些,但它们都适用于旧版本;

3是这些教程中最好的,但我似乎无法在GTK3中使用它,老实说它非常先进.有些事情也被弃用,替换似乎非常神秘,并且不清楚它们如何与DrawingArea一起工作:http: //lazka.github.io/pgi-docs/Gtk-3.0/classes/Widget.html#Gtk.Widget. set_style

官方教程没有关于它的部分,并且在很长一段时间内没有显着更新:

http://python-gtk-3-tutorial.readthedocs.org/en/latest/objects.html

https://github.com/sebp/PyGObject-Tutorial

我现在的问题是,是否有人可以帮助我了解如何使用Gtk.DrawingArea绘制?那里有gtk3教程吗?

我目前的目标是根据算法的输出自动在绘图区域绘制黑点,并显示结果.我会展示我的代码,但我几乎没有任何东西.

python python-3.x gtk3 drawingarea

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

C:GTK + 3.0(3.20) - 从GNU/Linux(Arch Linux)到Windows的交叉编译

我需要将GNU/Linux(Arch Linux)中的GTK +应用程序交叉编译到Windows.我已经尝试过使用mingw32,但它没有看到所有库(包括c的标准库!).所以,我需要:找到标准的库; 找到所有其他(glib,gio,gtk等)库.但是有一个问题 - 我找不到它们.我也无法从Windows编译.我必须做什么?

c linux windows cross-compiling gtk3

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

"将大小分配给..."在Gtk.ScrolledWindow中使用Gtk.TreeView时出现GTK警告

我在GTK 3应用程序中收到以下警告:

Gtk-WARNING**:在__main__+MCVEWindow 0000000004e93b30不调用gtk_widget_get_preferred_width/height()的情况下分配大小.代码如何知道要分配的大小?

Gtk.ScrolledWindow包含Gtk.TreeView附加到网格时,会发生警告,网格本身附加到网格上,gtk.ApplicationWindow并且有足够的元素供滚动条实际显示.如果没有足够的元素使其可滚动,则不会出现警告.

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk as gtk


class MCVEWindow(gtk.ApplicationWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self._tree_view = gtk.TreeView()
        self._tree_view.set_hexpand(True)
        self._tree_view.set_vexpand(True)

        self.populate_tree_view()  # populate tree view with fake items

        window_column = gtk.TreeViewColumn(
            "Window", gtk.CellRendererText(),
            text=0
        )
        window_column.set_resizable(True)
        handle_column = gtk.TreeViewColumn(
            "Handle", gtk.CellRendererText(),
            text=1
        )
        class_column = gtk.TreeViewColumn(
            "Class name", gtk.CellRendererText(),
            text=2
        )
        self._tree_view.append_column(window_column)
        self._tree_view.append_column(handle_column)
        self._tree_view.append_column(class_column)

        scrolled_tree_view = gtk.ScrolledWindow()
        scrolled_tree_view.add(self._tree_view)

        toolbar = gtk.Toolbar()

        expand_tree_view_button = gtk.ToolButton(icon_name="list-add") …
Run Code Online (Sandbox Code Playgroud)

python gtk pygobject python-3.x gtk3

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