PyGTK - Lớp ScrolledWindow
Cửa sổ cuộn được tạo để truy cập tiện ích con khác có diện tích lớn hơn cửa sổ mẹ. Một số tiện ích con như TreeView và TextView hỗ trợ cuộn. Đối với những người khác như Nhãn hoặc Bảng, một Chế độ xem nên được cung cấp.
Cú pháp sau được sử dụng cho hàm tạo của lớp gtk.ScrolledWindow:
sw = gtk.ScrolledWindow(hadj, vadj)
Sau đây là các phương thức của lớp gtk.ScrolledWindow:
ScrolledWindow.set_hadjustment() - Điều này đặt điều chỉnh ngang thành đối tượng gtk.Adjustment
ScrolledWindow.set_vadjustment() - Điều này đặt điều chỉnh theo chiều dọc thành đối tượng gtk.Adjustment
ScrolledWindow.set_Policy (hpolicy, vpolicy)- Điều này đặt thuộc tính "hscrollbar_policy" và "vscrollbar_policy". Một trong các hằng số xác định trước sau đây được sử dụng:
gtk.POLICY_ALWAYS - Thanh cuộn luôn hiện diện
gtk.POLICY_AUTOMATIC - Thanh cuộn chỉ xuất hiện nếu cần, tức là nội dung nhỏ hơn cửa sổ
gtk.POLICY_NEVER - Thanh cuộn không bao giờ hiện diện
ScrolledWindow.add_with_viewport(child) - Phương thức này được sử dụng để thêm một widget (được chỉ định bởi con) mà không có khả năng cuộn gốc vào cửa sổ đã cuộn. Đây là một chức năng tiện lợi tương đương với việc thêmchild đến một gtk.Viewport, sau đó thêm chế độ xem vào cửa sổ được cuộn.
Đoạn mã sau thêm một cửa sổ được cuộn xung quanh đối tượng gtk.Table với kích thước 10 x 10. Vì một đối tượng Bảng không hỗ trợ điều chỉnh tự động, nó sẽ được thêm vào một Khung nhìn.
sw = gtk.ScrolledWindow()
table = gtk.Table(10,10)
Hai vòng lặp lồng nhau được sử dụng để thêm 10 hàng, mỗi hàng 10 cột. Một widget gtk.Button được đặt trong mỗi ô.
for i in range(1,11):
for j in range(1,11):
caption = "Btn"+str(j)+str(i)
btn = gtk.Button(caption)
table.attach(btn, i, i+1, j, j+1)
Bảng đủ lớn này hiện được thêm vào trong cửa sổ cuộn cùng với một khung nhìn.
sw.add_with_viewport(table)
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("ScrolledWindow and Viewport")
self.set_size_request(400,300)
self.set_position(gtk.WIN_POS_CENTER)
sw = gtk.ScrolledWindow()
table = gtk.Table(10,10)
table.set_row_spacings(10)
table.set_col_spacings(10)
for i in range(1,11):
for j in range(1,11):
caption = "Btn"+str(j)+str(i)
btn = gtk.Button(caption)
table.attach(btn, i, i+1, j, j+1)
sw.add_with_viewport(table)
self.add(sw)
self.connect("destroy", gtk.main_quit)
self.show_all()
PyApp()
gtk.main()
Đoạn mã trên sẽ tạo ra kết quả sau: