gpt4 book ai didi

python - 滚动窗口上的 GTK3+ (3.14) 绘图区

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:33 26 4
gpt4 key购买 nike

有一段时间我一直在尝试将绘图区域放在滚动窗口上。我一直在阅读有关 pygtk 和 C 解决方案的文章,但我认为它们不适用于 pyGobject。

我做了一个最小的例子:

from gi.repository import Gtk, Gdk
import cairo

class Test(Gtk.Window):

def __init__(self):
Gtk.Window.__init__(self)
sw=Gtk.ScrolledWindow()
vp=Gtk.Viewport()
box=Gtk.VBox()

vp.set_size_request(100,100)

for i in range(3):
da=Gtk.DrawingArea()
da.connect("draw", self.draw, [0.3, 0.4, 0.6], da)
da.set_size_request(100,100)
box.add(da)

sw.add(vp)
vp.add(box)
self.add(sw)
self.show_all()

def draw(self, widget, event, color, da):
cr = widget.get_property('window').cairo_create()
cr.rectangle(0, 0, 100, 100)
cr.set_source_rgb(color[0], color[1], color[2])
cr.fill()

main=Test()
Gtk.main()

所以问题是绘图区域并不总是被渲染。例如,这是一个 gtk2 工作代码:

import gtk, cairo

class Test(gtk.Window):

def __init__(self):
gtk.Window.__init__(self)
sw=gtk.ScrolledWindow()
vp=gtk.Viewport()
box=gtk.VBox()

for i in range(3):
da=gtk.DrawingArea()
da.connect("expose-event", self.draw, [0.3, 0.4, 0.6], da)
box.add(da)

sw.add(vp)
vp.add(box)
self.add(sw)
self.show_all()

def draw(self, widget, event, color, da):
cr = widget.get_property('window').cairo_create()
cr.rectangle(0, 0, 100, 100)
cr.set_source_rgb(color[0], color[1], color[2])
cr.fill()

main=Test()
gtk.main()

以下文章请不要点我,我已经看了好几遍了!

我已经添加了 viewportsize_request,还缺少什么吗?

感谢您的帮助!

最佳答案

由 Emmanuele 通过 Gtk 邮件列表:

from gi.repository import Gtk, Gdk
import cairo

class Test(Gtk.Window):

def __init__(self):
Gtk.Window.__init__(self)
sw=Gtk.ScrolledWindow()
vp=Gtk.Viewport()
box=Gtk.VBox()

vp.set_size_request(100,100)

for i in range(3):
da=Gtk.DrawingArea()
da.connect("draw", self.draw, [0.3, 0.4, 0.6])
da.set_size_request(100,100)
box.add(da)

sw.add(vp)
vp.add(box)
self.add(sw)
self.show_all()

def draw(self, widget, cr, color):
cr.rectangle(0, 0, 100, 100)
cr.set_source_rgb(color[0], color[1], color[2])
cr.fill()
cr.queue_draw_area(0, 0, 100, 100)

return True

main=Test()
Gtk.main()

您应该阅读 GTK+ 3.x 的 API 引用:

https://developer.gnome.org/gtk/stable

以及 Python API 引用:

http://lazka.github.io/pgi-docs/#Gtk-3.0

关于python - 滚动窗口上的 GTK3+ (3.14) 绘图区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29989386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com