प्रश्न में पोस्ट किए गए लिंक में पीईजीटीके के लिए पेश किया गया समाधान जीटीके 3 के साथ पायथन-जीआई में काम नहीं करता है, हालांकि सामान्य बॉक्स के स्थान पर स्क्रोलडविंडो का उपयोग करने की चाल बहुत उपयोगी थी।
कंटेनर के साथ आकार बदलने के लिए बटन पर एक छवि प्राप्त करने के लिए मेरा न्यूनतम कार्य समाधान यहां दिया गया है।
from gi.repository import Gtk, Gdk, GdkPixbuf
class ButtonWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Button Demo")
self.set_border_width(10)
self.connect("delete-event", Gtk.main_quit)
self.connect("check_resize", self.on_check_resize)
self.box = Gtk.ScrolledWindow()
self.box.set_policy(Gtk.PolicyType.ALWAYS,
Gtk.PolicyType.ALWAYS)
self.add(self.box)
self.click = Gtk.Button()
self.box.add_with_viewport(self.click)
self.pixbuf = GdkPixbuf.Pixbuf().new_from_file('gtk-logo-rgb.jpg')
self.image = Gtk.Image().new_from_pixbuf(self.pixbuf)
self.click.add(self.image)
def resizeImage(self, x, y):
print('Resizing Image to ('+str(x)+','+str(y)+')....')
pixbuf = self.pixbuf.scale_simple(x, y,
GdkPixbuf.InterpType.BILINEAR)
self.image.set_from_pixbuf(pixbuf)
def on_check_resize(self, window):
print("Checking resize....")
boxAllocation = self.box.get_allocation()
self.click.set_allocation(boxAllocation)
self.resizeImage(boxAllocation.width-10,
boxAllocation.height-10)
win = ButtonWindow()
win.show_all()
Gtk.main()
(-10 चौड़ाई और ऊंचाई पर बटन में आंतरिक बॉर्डर और गद्दी समायोजित करने के लिए कर रहे हैं। मैं इस के साथ नगण्य बटन पर कोई बड़ा चित्र प्राप्त करने के लिए कोशिश की, लेकिन परिणाम बहुत अच्छा मुड़कर नहीं देखा ।)
इस उदाहरण में उपयोग की जाने वाली जेपीईजी फ़ाइल here से डाउनलोड की जा सकती है।
मैं यह कैसे करना है इसके बारे में और सुझावों का स्वागत करता हूं।
मैंने अपने परीक्षण कार्यक्रम में इस विधि को बदलने की कोशिश की और मुझे एक ट्रेसबैक (पायथन 3.2, डेबियन व्हीजी) मिला। संभवतः यह विधि एपीआई के लिए नई है (लेकिन प्रलेखन उस पर विरोधाभास करता है)। लेकिन दस्तावेज पढ़ना मुझे लगता है कि आप छवि को दो बार बनाने के बारे में गलत हैं (देखें ['set_from_pixbuf'] (http://www.pygtk.org/pygtk2reference/class-gtkimage.html#method-gtkimage--set-from-pixbuf) और ['new_from_pixbuf'] (http://www.pygtk.org/pygtk2reference/class-gtkimage.html#function-gtk--image-new-from-pixbuf))। वे दोनों pixbuf से एक नई छवि बनाते हैं। एक पिक्सबफ, एक छवि है। – Bobble