2017-12-18 2 views

답변

1

파이썬에서는 len(listbox)이됩니다. 즉, 목록 상자의 길이를 가져옵니다.

+0

너무 쉽게 들립니다. 우연히 vala에서 동일한 작업을 수행하는 방법을 알고 있습니다. 검색했지만 속성이나 메소드를 찾을 수 없습니다. –

2

bind_model을 사용하여 Gtk.ListBox를 모델에 바인딩하면 GLib.ListModel get_n_items 메서드가 생깁니다.

기본적으로 두 가지 방법이 있습니다. 추가/제거 된 항목을 추적하거나 Gtk.Container @foreach 메서드 (Gtk.ListBox가 Gtk.Container에서 상속)를 사용하여 계산해야 할 때마다 계산합니다. .

Gtk.ListBox를 확장/추가하고 추가/제거 메서드를 재정의하고 자식 수로 속성/필드를 유지하거나 신호 처리기를 Gtk.Container에 추가/제거 할 수 있습니다 같은 수를 유지하십시오.

가장 효율적이지 않은 방법은 @foreach 메서드를 사용하는 것입니다.이 메서드는 모든 하위 항목을 반복하고 숫자를 계산합니다. 카운트는 각 메소드 호출에 대해 수행됩니다. 이것이 당신이 몇 번이나 할 수 있다면, 그것은 약간의 영향을 미칠 것입니다.

using Gtk; 

int main (string[] args) { 
    Gtk.init (ref args); 

    var window = new Window(); 
    window.title = "Vala Listbox Example"; 
    window.border_width = 10; 
    window.window_position = WindowPosition.CENTER; 
    window.set_default_size (350, 70); 
    window.destroy.connect (Gtk.main_quit); 

    var box = new Gtk.Box (Orientation.VERTICAL, 5); 

    var listbox = new ListBox(); 

    int i = 10; 
    for (i = 0; i < 10; i++) { 
     listbox.add (new Label ("A label")); 
    } 

    var button = new Button.with_label ("Get count!"); 
    button.clicked.connect (() => { 
     int count = 0; 
     [email protected] (() => { 
      count++; 
     }); 

     print ("Count = %d\n", count); 
    }); 


    box.add (listbox); 
    box.add (button); 

    window.add (box); 

    window.show_all(); 

    Gtk.main(); 
    return 0; 
} 

한다고 가정 : 우리는 Gtk.ListBox 일부 Gtk.Label을 추가하고, 우리가 추가 한 라벨의 번호를 알고 있지만 우리가 버튼을 클릭하여 계산됩니다 곳에있다

는 매우 기본적인 예이다 우리는이 파일을 main.vala이라고 부르며 다음과 같이 컴파일합니다.

valac main.vala --pkg gtk+-3.0 
관련 문제