2012-08-31 24 views
5

Bir etiket ile bir yeniden boyutlandırılamayan iletişim kutusu oluşturmaya çalışıyorum. Bu etiket çok fazla metin içeriyor, bu nedenle numaralı iletişim kutusunu rahatlıkla kullanmadan sargıya sarmak istiyorum.GTK Bir iletişimde etiketleme etiketi

Bazı nedenlerden dolayı, bunun gerçekleşmesine izin vermek için GTK'nın ne alacağını öğrenemiyorum. Diyalogda maksimum genişlik ayarlamanın bir yolunu bile bulamıyorum, bu harika olurdu. İşte

ne demek istediğimi bir çalışan örnek: dolgu kullanılarak, bir Gtk.Table içindeki Gtk.Label koyarak (True olarak çizgi wrap ayarı dışında)

#!/usr/bin/env python 
#-*- coding:utf-8 -*- 

from gi.repository import Gtk 

class DialogExample(Gtk.Dialog): 

    def __init__(self, parent): 
     Gtk.Dialog.__init__(self, "My Dialog", parent, 0, 
      (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, 
      Gtk.STOCK_OK, Gtk.ResponseType.OK)) 

     self.set_default_size(150, 100) 
     self.set_resizable(False) 

     label = Gtk.Label("This is a dialog to display additional information, with a bunch of text in it just to make sure it will wrap enough for demonstration purposes") 
     label.set_line_wrap(True) 

     box = self.get_content_area() 
     box.add(label) 
     self.show_all() 

class DialogWindow(Gtk.Window): 

    def __init__(self): 
     Gtk.Window.__init__(self, title="Dialog Example") 

     self.set_default_size(250, 200) 


     button = Gtk.Button("Open dialog") 
     button.connect("clicked", self.on_button_clicked) 

     self.add(button) 

    def on_button_clicked(self, widget): 
     dialog = DialogExample(self) 
     response = dialog.run() 

     if response == Gtk.ResponseType.OK: 
      print "The OK button was clicked" 
     elif response == Gtk.ResponseType.CANCEL: 
      print "The Cancel button was clicked" 

     dialog.destroy() 

win = DialogWindow() 
win.connect("delete-event", Gtk.main_quit) 
win.show_all() 
Gtk.main() 

cevap

5

Bunu çözmüş ve bayrakları SHRİNK ve etiket için sabit bir genişlik ayarlanması. Böyle bir şey:

label = Gtk.Label("This is a dialog to display additional information, with a bunch of text in it just to make sure it will wrap enough for demonstration purposes") 
label.set_line_wrap(True) 
label.set_size_request(250, -1) # 250 or whatever width you want. -1 to keep height automatic 

table = Gtk.Table(1, 1, False) 
table.attach(label, 0, 1, 0, 1, Gtk.AttachOptions.SHRINK | Gtk.AttachOptions.FILL) 

kullanabileceğiniz 2,6 beri hile

+0

Sorunun ne fark biraz gömüyorduk. Pencereyi/iletişim kutusunu oluşturduğunuzda ve bu etiket ilk kez bir üst boyut referansı içermediğinde gösterildiğinden, Gtk etikete olabildiğince fazla alan atar ve ardından ana genişliğini ayarlar. büyük pencere. Bu davranışı önlemek için, ebeveyn için tercih edilen genişliği ayarlayın ve bir gösteri yapın, bu şekilde Gtk ebeveynlerin geometrisini hesaplar ve etiket ebeveynin boyutuna gerçek bir başvuruda bulunacaktır. Ben bu şekilde yaptım ve şimdi her şey bir çekicilik gibi çalışıyor. – satanas

+0

hi @satanas - Ebeveyn için tercih edilen genişliği nasıl ayarlayacağınızı ve bir şov yapmayı nasıl yapacağınızı biraz daha açıklayabilirsiniz? Aynı konuya sahibim; gtk.Table seçeneği v3.4'ten beri kullanımdan kaldırıldı, bu yüzden kullanım dışı bir çözüm arıyorum. TIA – fossfreedom