PyGTK - Lớp thanh cuộn
Lớp này là một lớp cơ sở trừu tượng cho các tiện ích gtk.Hscrollbar và gtk.Vscrollbar. Cả hai đều được liên kết với một đối tượng Điều chỉnh. Vị trí của ngón tay cái của thanh cuộn được điều khiển bởi các điều chỉnh cuộn. Các thuộc tính của đối tượng điều chỉnh được sử dụng như sau:
thấp hơn | Giá trị nhỏ nhất của vùng cuộn |
phía trên | Giá trị lớn nhất của vùng cuộn |
giá trị | Đại diện cho vị trí của thanh cuộn, phải nằm giữa dưới và trên |
page_size | Đại diện cho kích thước của vùng có thể cuộn hiển thị |
step_increment | Khoảng cách để cuộn khi các mũi tên bước nhỏ được nhấp vào |
page_increment | Khoảng cách để cuộn khi Page Up hoặc là Page Down các phím được nhấn |
Chương trình sau đây cho thấy một HScale và một tiện ích HScrollbar được đặt trong một VBox được thêm vào cửa sổ cấp trên cùng. Mỗi người trong số họ được liên kết với một đối tượng điều chỉnh.
adj1 = gtk.Adjustment(0, 0, 101, 0.1, 1, 1)
self.adj2 = gtk.Adjustment(10,0,101,5,1,1)
Tiện ích gtk.HScale là một điều khiển thanh trượt được gắn với adj1. Chính sách cập nhật, số lượng và vị trí của giá trị bản vẽ được thiết lập như sau:
scale1 = gtk.HScale(adj1)
scale1.set_update_policy(gtk.UPDATE_CONTINUOUS)
scale1.set_digits(1)
scale1.set_value_pos(gtk.POS_TOP)
scale1.set_draw_value(True)
gtk.HScrollbar cung cấp một thanh cuộn ngang. Nó được liên kết với đối tượng adj2. Chính sách cập nhật của nó cũng được đặt thành LIÊN TỤC.
self.bar1 = gtk.HScrollbar(self.adj2)
self.bar1.set_update_policy(gtk.UPDATE_CONTINUOUS)
Để hiển thị giá trị tức thời của thanh cuộn, tín hiệu 'giá trị đã thay đổi' của the adjustment object — adj2 được kết nối với chức năng gọi lại on_scrolled(). Hàm truy xuất thuộc tính giá trị của đối tượng điều chỉnh và hiển thị nó trên nhãn bên dưới thanh cuộn.
self.adj2.connect("value_changed", self.on_scrolled)
def on_scrolled(self, widget, data = None):
self.lbl2.set_text("HScrollbar value: "+str(int(self.adj2.value)))
Thí dụ
Quan sát đoạn mã sau:
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Range widgets Demo")
self.set_default_size(250, 200)
self.set_position(gtk.WIN_POS_CENTER)
adj1 = gtk.Adjustment(0.0, 0.0, 101.0, 0.1, 1.0, 1.0)
self.adj2 = gtk.Adjustment(10,0,101,5,1,1)
scale1 = gtk.HScale(adj1)
scale1.set_update_policy(gtk.UPDATE_CONTINUOUS)
scale1.set_digits(1)
scale1.set_value_pos(gtk.POS_TOP)
scale1.set_draw_value(True)
vb = gtk.VBox()
vb.add(scale1)
lbl1 = gtk.Label("HScale")
vb.add(lbl1)
self.bar1 = gtk.HScrollbar(self.adj2)
self.bar1.set_update_policy(gtk.UPDATE_CONTINUOUS)
vb.add(self.bar1)
self.lbl2 = gtk.Label("HScrollbar value: ")
vb.add(self.lbl2)
self.adj2.connect("value_changed", self.on_scrolled)
self.add(vb)
self.connect("destroy", gtk.main_quit)
self.show_all()
def on_scrolled(self, widget, data=None):
self.lbl2.set_text("HScrollbar value: "+str(int(self.adj2.value)))
if __name__ == '__main__':
PyApp()
gtk.main()
Đoạn mã trên sẽ tạo ra kết quả sau: