PyGTK - คลาสแถบเลื่อน
คลาสนี้เป็นคลาสพื้นฐานนามธรรมสำหรับวิดเจ็ต gtk.Hscrollbar และ gtk.Vscrollbar ทั้งสองเชื่อมโยงกับออบเจ็กต์การปรับปรุง ตำแหน่งของหัวแม่มือของแถบเลื่อนถูกควบคุมโดยการปรับเลื่อน แอ็ตทริบิวต์ของอ็อบเจ็กต์การปรับปรุงถูกใช้ดังนี้ -
ต่ำกว่า | ค่าต่ำสุดของขอบเขตการเลื่อน |
ด้านบน | ค่าสูงสุดของขอบเขตการเลื่อน |
มูลค่า | แสดงถึงตำแหน่งของแถบเลื่อนซึ่งต้องอยู่ระหว่างล่างและบน |
page_size | แสดงขนาดของพื้นที่เลื่อนที่มองเห็นได้ |
step_increment | ระยะทางในการเลื่อนเมื่อลูกศรขนาดเล็กถูกคลิก |
page_increment | ระยะทางในการเลื่อนเมื่อ Page Up หรือ Page Down กดปุ่ม |
โปรแกรมต่อไปนี้แสดงวิดเจ็ต HScale และ HScrollbar ที่อยู่ใน VBox ที่เพิ่มลงในหน้าต่างระดับบน แต่ละอันมีความเกี่ยวข้องกับออบเจ็กต์การปรับแต่ง
adj1 = gtk.Adjustment(0, 0, 101, 0.1, 1, 1)
self.adj2 = gtk.Adjustment(10,0,101,5,1,1)
วิดเจ็ต gtk.HScale คือตัวควบคุมแถบเลื่อนที่แนบมากับ adj1 นโยบายการอัปเดตจำนวนและตำแหน่งของค่าการวาดถูกกำหนดไว้ดังนี้ -
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 มีแถบเลื่อนแนวนอน มันเกี่ยวข้องกับวัตถุ adj2 นโยบายการอัปเดตก็ตั้งค่าเป็นต่อเนื่อง
self.bar1 = gtk.HScrollbar(self.adj2)
self.bar1.set_update_policy(gtk.UPDATE_CONTINUOUS)
ในการแสดงค่าทันทีของแถบเลื่อนสัญญาณ "เปลี่ยนค่า" ของ the adjustment object — adj2 เชื่อมต่อกับฟังก์ชันโทรกลับ on_scrolled(). ฟังก์ชั่นดึงคุณสมบัติค่าของออบเจ็กต์การปรับแต่งและแสดงบนป้ายกำกับด้านล่างแถบเลื่อน
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)))
ตัวอย่าง
สังเกตรหัสต่อไปนี้ -
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()
โค้ดด้านบนจะสร้างผลลัพธ์ต่อไปนี้ -