标签: gtk

在 PyGtk3 中从 svg 创建 pixbuf 作为字符串

假设我在内存中读取了一个 svg 文件。操作字符串(更改颜色、渐变等)后,我不想将(现已修改的)svg“文件”包含在使用 PyGTK3 编写的图形用户界面中。最简单的方法是将 svg 再次保存为文件并保存为类似的文件

Gtk.Image.new_from_file(modified_svg)
Run Code Online (Sandbox Code Playgroud)

由于我不想经常这样做,因此有很多不必要的数据从慢速硬盘写入/读取。有没有办法直接从内存中的 svg 字符串创建图像?(我想到了类似于 pixbuf 的东西,但我找不到东西)

python gtk svg pygtk

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

使用 GIO 处理文件

我需要打开一个文件来读取内容并将其内容显示在屏幕上。这应该使用 GIO 文件处理来完成。我正在阅读本教程,但作为练习,我需要使用 GIO 来执行以下 c 代码。在c中程序可以是:

#include<stdio.h>
#include<string.h>
int main()
{

  FILE *fp;
  char temp[1000];
  if(fp=fopen("locations.txt", "r") != NULL)
   {
     fgets(temp, 1000, fp);
     printf("%s", temp[1000]);
    }
 fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢。

c gtk file-handling gio

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

gtkmm 中的程序不会显示按钮

我正在尝试在 gtkmm 中编写一个程序,但按钮不会显示。我已经做了我所知道的一切来让这些按钮显示,但没有任何效果。我什至在 main 和 win_home.cpp 文件中都包含了“显示全部”方法,但仍然没有任何反应。然而,程序确实会执行代码,因为 cout 语句都被打印出来。有谁知道为什么这些按钮不会显示?

主要.cpp:

#include <gtkmm.h>
#include <iostream>
#include "win_home.h"

int main(int argc, char *argv[])
{
    auto app = Gtk::Application::create(argc, argv, "com.InIT.InITPortal");

    std::cout << "Creating Portal Window" << std::endl;
    HomeGUI win_home;

    win_home.set_default_size(600,400);
    win_home.set_title("St. George InIT Home");

    return app->run(win_home);
}
Run Code Online (Sandbox Code Playgroud)

win_home.cpp:

#include "win_home.h"

HomeGUI::HomeGUI()
{
    //build interface/gui
    this->buildInterface();
    //show_all_children();

    //register Handlers
    //this->registerHandlers();
}
HomeGUI::~HomeGUI()
{

}

void HomeGUI::buildInterface()
{

    std::cout << "Building Portal Interface" << std::endl;
    m_portal_rowbox = Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 5);
    add(m_portal_rowbox);
        Gtk::Button m_pia_button = Gtk::Button("Printer …
Run Code Online (Sandbox Code Playgroud)

c++ gtk button show gtkmm

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

如何在Linux上为GTK+搭建C开发环境?

我是 Linux 中 C 语言编程的新手。我喜欢用 GTKlibs 制作 GUI。唯一的问题是我无法 - 而且不仅是 gtk - 无法正确安装这些软件包。我在包含库时遇到问题,就像#include<gtk/gtk.h>我已经使用sudo apt-get install gtklib-3-dev.

在编译时,它每次都会说文件丢失等等。我已阅读将 dpkg 配置和 cflags 放入编译器的选项,但这也不起作用。linux 如何管理包含文件夹以及为什么像 gtk 这样的库有一个上层文件夹,上面有 gtk3 等版本。这就是导致文件丢失的问题。

c linux gtk libs

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

GTK 4 按键事件处理程序

我正在尝试使用 c 中的 gtk 4 处理按键事件(具体是箭头键)。每当我使用像这里(stackoverflow)和这里(stackoverflow)这样的地方的一些答案时,它们似乎不起作用。

相反,我收到以下错误:

(<unknown>:10924): GLib-GObject-WARNING **: 15:26:27.129: ../gobject/gsignal.c:2613: signal 'key-press-event' is invalid for instance '0x7faa268722f0' of type 'GtkApplicationWindow'
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用“key_pressed”等,但无济于事。

以下项目的总体目标是能够沿着按下/按下箭头键的方向移动一格,但是由于出现了小问题,我还没有做到这一点。

有什么建议吗?

#include <gtk/gtk.h>

static void
draw_function
(GtkDrawingArea *area, cairo_t *cr, int width, int height, gpointer user_data)
{
   // int square_size = 80.0;
   cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */
   cairo_paint (cr);

   cairo_set_source_rgb(cr, 0.2, 0.3, 0.8);
   cairo_rectangle(cr, 10, 10, 90, 90);
   cairo_fill(cr);
   cairo_save(cr);

   cairo_scale(cr, 0.6, 0.6);
   cairo_set_source_rgb(cr, 0.8, 0.3, 0.2);
   cairo_rectangle(cr, 30, …
Run Code Online (Sandbox Code Playgroud)

c gtk gtk4

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

将字符数组转换为const gchar*

我有一个包含字符串的字符数组:

char buf[MAXBUFLEN];
buf[0] = 'f';
buf[1] = 'o';
buf[2] = 'o';
buf[3] = '\0';
Run Code Online (Sandbox Code Playgroud)

我希望将此字符串作为参数传递给gtk_text_buffer_insert函数,以便将其插入到GtkTextBuffer.我无法弄清楚的是如何将它转换为a const gchar *,这是gtk_text_buffer_insert第三个参数.

有人可以帮帮我吗?

c gtk

0
推荐指数
1
解决办法
4785
查看次数

如何在gtk/python程序中创建一个额外的无限循环?

新的,我知道当你调用gtk.main时程序应该进入无限循环.当调用self.quit时,gtk.main中的循环将中断.

但我需要另一个循环活动,它将检查日志文件的更改,并不断更新更改,进入gtk.Textbuffer,以显示在gtk.Textbox中.那么在哪里可以在以下代码中添加此循环.

class MessageBox:

    def __init__(self):
        builder = gtk.Builder()
        builder.add_from_file("mbx.glade")
        self.window = builder.get_object("window")
        dic = { "on_buttonSend_clicked" : self.sendmsg,
                "on_entry_activate" : self.sendmsg,
                "on_buttonWhois_clicked" : self.sendwhois,
                "on_buttonIdleTime_clicked" : self.sendidletime,
                "on_window_destroy" : self.exitfunc}
        builder.connect_signals(dic)
        self.entry = builder.get_object("entry")
        self.display = builder.get_object("display")
        self.displaybuff=self.display.get_buffer()

    def exitfunc(self, widget):


    def sendmsg(self, widget):


    def sendwhois (self, widget):


    def sendidletime (self, widget):


if __name__ == "__main__":

    msgbox = MessageBox()
    msgbox.window.show()
    gtk.main()
Run Code Online (Sandbox Code Playgroud)

python gtk pygtk

0
推荐指数
1
解决办法
315
查看次数

如何向pygobject虚拟终端发送命令?

现在我可以创建一个终端,但输出不用作命令.它只是将字符串打印到虚拟终端.

from gi.repository import Gtk, GObject, Vte

class TheWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="inherited cell renderer")
        self.set_default_size(400, 200)

        box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        v = Vte.Terminal()
        #v.connect ("child-exited", lambda term: gtk.main_quit())
        length = len("echo \"string\"\n")
        v.feed("echo \"string\"\n", length)
        box.pack_start(v, True, True, 0)

        self.add(box)
Run Code Online (Sandbox Code Playgroud)

我尝试使用这里的文档 http://developer.gnome.org/vte/0.30/,但是我在解决这些问题时遇到了一些麻烦.我根本找不到关于vte for python gtk3的任何文档.

主要是我只想弄清楚如何在虚拟终端中获取命令提示符,以便它接受来自python gtk3接口内部的命令.

python gtk terminal pygobject gtk3

0
推荐指数
1
解决办法
2034
查看次数

为什么要修改内存地址?

我有这个代码序列:

printf("%p\n", gameGUI);
printf("label %p\n", gameGUI->labelRoundType);
gui_setRoundType(gameGUI->labelRoundType,
                 gameGUI->game->rounds[roundId]);
printf("label %p\n", gameGUI->labelRoundType);
printf("%p\n", gameGUI);
Run Code Online (Sandbox Code Playgroud)

函数gui_setRoundType的代码.

int gui_setRoundType(GtkWidget *roundTypeLabel, struct Round *round)
{
    if (round == NULL)
        return ROUND_NULL;
    if (roundTypeLabel == NULL)
        return POINTER_NULL;

    char type[1] = { '\0' };
    intToChar(round->roundType, type);
    gtk_label_set_text(GTK_LABEL(roundTypeLabel), type);

    return NO_ERROR;
}
Run Code Online (Sandbox Code Playgroud)

GameGUI结构的代码:

struct GameGUI {
    struct Game *game;
    struct Select *select;
    struct PlayerCards *playerCards;
    struct PlayersGUI *playersGUI;
    struct CardsFromTable *cardsFromTable;
    struct BidGUI *bidGUI;
    GtkWidget *windowTable;
    GtkWidget *fixedTable;
    GtkWidget *buttonShowScore;
    GtkWidget *imageTrump;
    GtkWidget *labelRoundType;
    GtkWidget *labelNoOfBids; …
Run Code Online (Sandbox Code Playgroud)

c gtk

0
推荐指数
1
解决办法
64
查看次数

在LMDE2(Debian 8.2)上使用OpenGL和GTK构建OpenCV 3.0

我用构建了opencv cmake -DWITH_OPENGL=ON ..,但是cmake的输出告诉我支持的OpenGL是NO

而且我已经检查了cmake缓存以确保WITH_OPENGLis是ON

使用的GUI是GTK + 3.0,并且已安装libgtkglext1-dev

gtk opengl opencv3.0

0
推荐指数
1
解决办法
899
查看次数

标签 统计

gtk ×10

c ×5

python ×3

pygtk ×2

button ×1

c++ ×1

file-handling ×1

gio ×1

gtk3 ×1

gtk4 ×1

gtkmm ×1

libs ×1

linux ×1

opencv3.0 ×1

opengl ×1

pygobject ×1

show ×1

svg ×1

terminal ×1