gpt4 book ai didi

python - GtkWindow 一次只能包含一个小部件

转载 作者:行者123 更新时间:2023-11-28 22:57:57 25 4
gpt4 key购买 nike

我正在使用此代码从网络检索和显示图像:

class Display(object):

def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect('destroy', self.destroy)
self.window.set_border_width(10)

self.image = gtk.Image()
response = urllib2.urlopen('http://image.url/image.jpg').read()

pbuf = gtk.gdk.PixbufLoader()
pbuf.write(response)
pbuf.close()
self.image.set_from_pixbuf(pbuf.get_pixbuf())

self.window.add(self.image)
self.image.show()
self.window.show()

def main(self):
gtk.main()

def destroy(self, widget, data=None):
gtk.main_quit()

它有效,但是我现在想在图像下方显示一个文本/输入框(以便稍后检索文本)。我在 self.image.show() 下添加了以下内容:

self.entry = gtk.Entry()
self.window.add(self.entry)
self.entry.show()

但是,当我运行它时,它发出了这个警告,并且没有出现输入框:

ee.py:31: GtkWarning: Attempting to add a widget with type GtkEntry to a GtkWindow, but as a GtkBin subclass a GtkWindow can only contain one widget at a time; it already contains a widget of type GtkImage self.window.add(self.entry)

不确定为什么它不允许我放置多个小部件,有人对此有解决方案吗?

最佳答案

的确,打包就是答案。

import gtk
import urllib2
class Display(object):

def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect('destroy', self.destroy)
self.window.set_border_width(10)

# a box underneath would be added every time you do
# vbox.pack_start(new_widget)

vbox = gtk.VBox()
self.image = gtk.Image()
response = urllib2.urlopen('http://1.bp.blogspot.com/-e-rzcjuCpk8/T3H-mSry7PI/AAAAAAAAOrc/Z3XrqSQNrSA/s1600/rubberDuck.jpg').read()

pbuf = gtk.gdk.PixbufLoader()
pbuf.write(response)
pbuf.close()
self.image.set_from_pixbuf(pbuf.get_pixbuf())

self.window.add(vbox)
vbox.pack_start(self.image, False)
self.entry = gtk.Entry()
vbox.pack_start(self.entry, False)

self.image.show()
self.window.show_all()

def main(self):
gtk.main()

def destroy(self, widget, data=None):
gtk.main_quit()

a=Display()
a.main()

关于python - GtkWindow 一次只能包含一个小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14264753/

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