我在版本3中丢失..在python2 + gdk2中是:
#!/usr/bin/env python2
import gtk
gtk.gdk.window_process_all_updates()
window_xid = 54525964
gdk_window = gtk.gdk.window_foreign_new(window_xid)
Run Code Online (Sandbox Code Playgroud)
这非常直截了当.但是,恐怖:
#!/usr/bin/env python3
from gi.repository import xlib
from gi.repository import Gdk
from gi.repository import GdkX11
Gdk.Window.process_all_updates()
xlib_window = "???????"
gdk_display = GdkX11.X11Display.get_default()
gdk_window = GdkX11.X11Window.foreign_new_for_display(gdk_display, xlib_window)
Run Code Online (Sandbox Code Playgroud)
xlib杀了我..我无法用它做任何事情.有没有人在使用它之前?
从xid获取窗口是在python2中获取屏幕截图的最快方法我想我会在python3中尝试另一种方式..任何想法?也许peek_children从根窗口?但是,我怎么知道它是否是我想要的窗口?
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) 有人可以用css为一个GTK +小部件设置样式吗?我无法弄清楚如何查看文档:
#include <gtk/gtk.h>
int main(int argc,char *argv[])
{
gtk_init(&argc,&argv);
GtkWidget *window;
GtkWidget *button;
GtkCssProvider *cssProvider;
gtk_css_provider_load_from_path(cssProvider,"./gtkExample2.css",NULL);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
button = gtk_button_new_with_label("GTK Button");
gtk_style_context_add_provider(gtk_widget_get_style_context(window),cssProvider,GTK_STYLE_PROVIDER_PRIORITY_USER);
g_signal_connect_swapped(window,"delete-event",G_CALLBACK(gtk_widget_destroy),window);
gtk_container_set_border_width(GTK_CONTAINER(window),20);
gtk_container_add(GTK_CONTAINER(window),button);
gtk_widget_show(window);
gtk_widget_show(button);
gtk_main();
return 1;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的Gtk应用程序中转换菜单栏,因此它将使用GActions
(来自Gio)而不是GtkActions
使用GObject Instrospection的Python3.
我一直试图自己解决这个问题,但到目前为止看起来非常复杂,我没有太多运气.
如果有人可以请发布一个如何创建GAction
基于的简单菜单的示例
这对我很有帮助.
编辑:这是我现在在窗口中的菜单栏:
如果有人可以复制使用GioActions显示的菜单项,那么我就可以弄清楚它们是如何工作的,这样会很棒.
顺便说一下,我使用窗口回调的所有操作都不是app回调,所以这是一个窗口菜单栏而不是app菜单栏.
我自己一直在学习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教程吗?
我目前的目标是根据算法的输出自动在绘图区域绘制黑点,并显示结果.我会展示我的代码,但我几乎没有任何东西.
不幸的是,我使用的是Windows(Windows7 x64).使用Code :: Blocks和GTK + 3.6.4中的MinGW编译器.我从glib手动编译了所有模式.
当我使用文件选择器对话框/颜色选择器 - 没关系时,我收到以下错误:
GLib-GIO-ERROR**: No GSettings schemas are installed on the system
程序终止.
我该怎么做才能解决这个问题?
我正在尝试做的是检测用户何时更改GtkStack中的可见子项.
我正在使用GtkStackSwitcher作为按照这种设计显示按钮的可见方式:
因此 - 当一个人点击/切换其中一个按钮时,我想执行一些处理.
我应该连接哪个事件来实现这一目标?
我看过Gtk.Stack和Gtk.StackSwitcher,但我没有看到任何明显的信号.关于最佳方式的任何想法?
这些似乎不是标准按钮 - 所以我不认为这种情况适用于'点击'事件.
我正在使用Ubuntu 14.04 Gtk + 3.10,python3
我已经使用自制软件安装了python gtk3,但它打印出来了
警告:已经安装了gtk + 3-3.14.6
但是当我尝试在python中导入它时
from gi.repository import Gtk
Run Code Online (Sandbox Code Playgroud)
它给出了错误
ImportError:没有名为gi.repository的模块
请帮忙.
我需要将GNU/Linux(Arch Linux)中的GTK +应用程序交叉编译到Windows.我已经尝试过使用mingw32
,但它没有看到所有库(包括c的标准库!).所以,我需要:找到标准的库; 找到所有其他(glib,gio,gtk等)库.但是有一个问题 - 我找不到它们.我也无法从Windows编译.我必须做什么?
我在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)