如何解决在 Gtk 中,如何在创建时使窗口变小
我正在尝试使用 Entry 小部件显示图像和框。我可以做到这一点,但窗口太大,底部的小部件几乎看不见。我尝试了几次调用来设置窗口的大小或取消最大化它,但它们似乎没有效果。我确定问题只在图像很大时发生,但仍然想知道如何在可调整大小的窗口中显示大图像,或者就此而言,从代码对窗口的几何形状进行任何更改。我试过的所有函数调用似乎都没有效果。
这是我的代码:
import gi
gi.require_version("Gtk","3.0")
from gi.repository import Gtk
from gi.repository import GdkPixbuf
from urllib.request import urlopen
class Display(object):
def __init__(self):
self.window = Gtk.Window()
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 = urlopen('http://1.bp.blogspot.com/-e-rzcjuCpk8/T3H-mSry7PI/AAAAAAAAOrc/Z3XrqSQNrSA/s1600/rubberDuck.jpg').read()
pbuf = GdkPixbuf.PixbufLoader()
pbuf.write(response)
pbuf.close()
self.image.set_from_pixbuf(pbuf.get_pixbuf())
self.window.add(vbox)
vbox.pack_start(self.image,False,0)
self.entry = Gtk.Entry()
vbox.pack_start(self.entry,True,0)
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()
解决方法
发布的大部分信息似乎都与 Gtk2 而不是 Gtk3 有关,但有一个解决方案:使用 pix buf 加载程序并设置大小:
from gi.repository import Gtk,Gdk,GdkPixbuf
#more stuff
path = config['DEFAULT']['datasets']+'working.png'
with open(path,'rb') as f:
pixels = f.read()
loader = GdkPixbuf.PixbufLoader()
loader.set_size(400,400)
loader.write(pixels)
pb = GdkPixbuf.Pixbuf.new_from_file(path)
self.main_image.set_from_pixbuf(loader.get_pixbuf())
loader.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。