trên chương trình GTK3 bằng Python Tôi đã cài đặt nhật ký. Đây là một TextView với TextBuffer trong một ScrolledWindow. Với một thói quen, tôi thêm một dòng mới vào nhật ký này. Sau đó nó sẽ di chuyển đến dòng cuối cùng.Cuộn đến cuối ScrolledWindow/TextView
def append_log(self, line):
self.textbuffer.insert(self.textbuffer.get_end_iter(), "\n"+line, -1)
# scrolling down
Nó sẽ giống như thế này: http://www.physik.tu-dresden.de/~s9472632/log_manual.png
Nhưng nó không hoạt động. Tôi đã thử đoạn mã sau.
# nothing happens
adj = self.scrolledwindow.get_vadjustment()
adj.set_value(adj.get_upper()-adj.get_page_size()) # same without subtraction (only upper or page_size)
self.scrolledwindow.set_vadjustment(adj) # with and without this line
.
# nothing happens
self.textview.scroll_to_iter(self.textbuffer.get_end_iter(), 0.0, False, 0.5, 0.5)
.
# works a bit but scroll bars cover the text (see picture below)
self.textview.scroll_to_mark(self.textbuffer.get_insert(), 0.0, False, 0.5, 0.5)
Ảnh: http://www.physik.tu-dresden.de/~s9472632/log_scroll.png
Dường như bốn đối số cuối cùng của scroll_to * (within_margin, use_align, xalign, yalign) không có ảnh hưởng của các kết quả.
Cách hoạt động?
Tạm biệt Markus
Đảm bảo bạn đang sử dụng phương thức thêm cho trẻ em có khả năng cuộn gốc. Đây là 'container_add' trong C api. – ergosys