GTK3 + Grid (http://lazka.github.io/pgi-docs/Gtk-3.0/classes/Grid.html#Gtk.Grid) ile python satırları ve sütunları içeren bir ızgarayı dinamik olarak doldurmak istiyorum, ancak düzgün satırları silmek istiyorum . Bu durumda, her ikinci satırı siler. Üst satırda gtk.grid (GTK3 +/Python) içinde bir satır silme
bir döngü içinde yeni Satırları oluşturuluyor neden ... Fikrim yok:self.__builder.attach_next_to(cell[0],None,Gtk.PositionType.TOP,1,1) #Place a new Row
öz .__ oluşturucu Izgara, hücre [0] Etiket Sütun doldurmak için dahildir.
self.__builder.remove_row(-self.__v_size_value)
i merak, sadece eksi işareti ile çalışır, ama sadece her saniye satırda çünkü: i onları silme deneyin nasıl. Belki onları üst yöne yerleştirdiğim için? (Ben bu şekilde denedim, ve doğru, orada "konum" değeri pozitif olması gerekirken) self .__ v_size_value Geçici Satır Miktarını içerir.
Bu Satırları oluşturuluyor ve tekrar onları silme çalışırken bakmak nasıl:
- İlk -> üret satır bir döngü içinde yukarıda olduğu Komutanlığı ile (Örnek: 6 Satırlar)
- İkinci -> bu komut ile
- Satır 6/remove_row (-6) satırları silme deneyin/Satır 6 silinir
- Sıra 5/remove_row (-5)/Satır 4 silinir ??? (Satır 5 hala kalır)
- Satır 4/remove_row (-4)/Satır 2 silindi ??? : Bu arıza gösteren küçük bir senaryo yazdı
/hiçbir şey bir daha (Sıra 1 hala kalır) olur
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
class MyWindow(Gtk.Window):
row = 1
def __init__(self):
Gtk.Window.__init__(self, title="Hello World")
self.box = Gtk.Box.new(Gtk.Orientation.VERTICAL,4)
self.add(self.box)
self.button = Gtk.Button(label="Insert Row")
self.button.connect("clicked", self.on_button_clicked)
self.box.pack_start(self.button, True, True, 0)
self.button2 = Gtk.Button(label="Remove Row")
self.button2.connect("clicked", self.on_button2_clicked)
self.box.pack_start(self.button2, True, True, 0)
self.grid = Gtk.Grid()
self.box.pack_start(self.grid, True, True, 0)
def on_button_clicked(self, widget):
print("Increasing Row" + str(self.row))
label = Gtk.Label(self.row)
self.grid.attach_next_to(label,None,Gtk.PositionType.TOP,1,1)
self.row = self.row + 1
self.grid.show_all()
def on_button2_clicked(self, widget):
self.row = self.row - 1
print ("Decrease Row #" + str(self.row))
self.grid.remove_row(-self.row)
self.grid.show_all()
win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
Bu kod sadece bir satırı kaldırmak, her satırını kaldıramaz. –
Goyo
Üzgünüm, kendimi yanıltıcı olarak ifade ettim. For döngüsünde Satırlar oluşturur. Ondan sonra tekrar silmeye çalışıyorum. Ancak "remove_row" her ikinci Satırda yürürlüğe girer. Örnek: (Satır 6/remove_row (6)) -> Satır 6 silindi, (Satır 5/remove_row (5)) -> hiçbir şey olmuyor, (Satır 4/remove_row (4)) -> Satır 4 silindi ve böylece ... –
Geliştirilebileceğini düşünüyorsanız, sorunuzu düzenleyebilirsiniz. Ayrıca, 'remove_row (5)', 5. satırdaki satırı kaldırmalıdır, eğer bu olmazsa, gtk3 veya python bağlamalarında bir hata olması gerekir. Neler olup bittiğini bilmek yardımcı olabilir. – Goyo