<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # PyGTK 中的小部件 II > 原文: [http://zetcode.com/gui/pygtk/widgetsII/](http://zetcode.com/gui/pygtk/widgetsII/) 在 PyGTK 編程教程的這一部分中,我們將繼續介紹 PyGTK 小部件。 ## `Entry` `Entry`是單行文本輸入字段。 該小部件用于輸入文本數據。 `entry.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example demonstrates the Entry widget # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Entry") self.set_size_request(250, 200) self.set_position(gtk.WIN_POS_CENTER) fixed = gtk.Fixed() self.label = gtk.Label("...") fixed.put(self.label, 60, 40) entry = gtk.Entry() entry.add_events(gtk.gdk.KEY_RELEASE_MASK) fixed.put(entry, 60, 100) entry.connect("key-release-event", self.on_key_release) self.connect("destroy", gtk.main_quit) self.add(fixed) self.show_all() def on_key_release(self, widget, event): self.label.set_text(widget.get_text()) PyApp() gtk.main() ``` 此示例顯示了條目小部件和標簽。 我們輸入的文本將立即顯示在標簽控件中。 ```py entry = gtk.Entry() ``` `Entry`小部件已創建。 ```py entry.connect("key-release-event", self.on_key_release) ``` 如果`Entry`小部件中的文本被更改,我們將調用`on_key_release()`方法。 ```py def on_key_release(self, widget, event): self.label.set_text(widget.get_text()) ``` 我們從`Entry`小部件獲取文本并將其設置為標簽。 ![Entry Widget](https://img.kancloud.cn/97/f9/97f9684d0acb37971970fc5cf025c307_258x228.jpg) 圖:`Entry`小部件 ## `HScale` `HScale`是水平滑塊,它使用戶可以通過在有限間隔內滑動旋鈕來以圖形方式選擇一個值。 我們的示例將顯示音量控制。 `hscale.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example demonstrates the HScale widget # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk import sys class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Scale") self.set_size_request(260, 150) self.set_position(gtk.WIN_POS_CENTER) scale = gtk.HScale() scale.set_range(0, 100) scale.set_increments(1, 10) scale.set_digits(0) scale.set_size_request(160, 35) scale.connect("value-changed", self.on_changed) self.load_pixbufs() self.image = gtk.Image() self.image.set_from_pixbuf(self.mutp) fix = gtk.Fixed() fix.put(scale, 20, 40) fix.put(self.image, 219, 50) self.add(fix) self.connect("destroy", lambda w: gtk.main_quit()) self.show_all() def load_pixbufs(self): try: self.mutp = gtk.gdk.pixbuf_new_from_file("mute.png") self.minp = gtk.gdk.pixbuf_new_from_file("min.png") self.medp = gtk.gdk.pixbuf_new_from_file("med.png") self.maxp = gtk.gdk.pixbuf_new_from_file("max.png") except Exception, e: print "Error reading Pixbufs" print e.message sys.exit(1) def on_changed(self, widget): val = widget.get_value() if val == 0: self.image.set_from_pixbuf(self.mutp) elif val > 0 and val <= 30: self.image.set_from_pixbuf(self.minp) elif val > 30 and val < 80: self.image.set_from_pixbuf(self.medp) else: self.image.set_from_pixbuf(self.maxp) PyApp() gtk.main() ``` 在上面的示例中,我們有`HScale`和`Image`小部件。 通過拖動比例尺,我們可以在`Image`小部件上更改圖像。 ```py scale = gtk.HScale() ``` `HScale`小部件已創建。 ```py scale.set_range(0, 100) ``` 我們設置刻度的上下邊界。 ```py scale.set_increments(1, 10) ``` `set_increments()`方法設置范圍的步長和頁面大小。 ```py scale.set_digits(0) ``` 我們希望刻度上具有整數值,因此我們將小數位數設置為零。 ```py if val == 0: self.image.set_from_pixbuf(self.mutp) elif val > 0 and val <= 30: self.image.set_from_pixbuf(self.minp) elif val > 30 and val < 80: self.image.set_from_pixbuf(self.medp) else: self.image.set_from_pixbuf(self.maxp) ``` 根據獲得的值,我們在圖像小部件中更改圖片。 ![HScale Widget](https://img.kancloud.cn/ed/2e/ed2e28bbbfe6df66f2895811d096a318_268x178.jpg) 圖:`HScale`小部件 ## `ToggleButton` `ToggleButton`是具有兩種狀態的按鈕。 已按下但未按下。 通過單擊可以在這兩種狀態之間切換。 在某些情況下此功能非常合適。 `togglebuttons.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example demonstrates the ToggleButton widget # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.color = [0, 0, 0] self.set_title("ToggleButtons") self.resize(350, 240) self.set_position(gtk.WIN_POS_CENTER) self.connect("destroy", gtk.main_quit) red = gtk.ToggleButton("Red") red.set_size_request(80, 35) red.connect("clicked", self.onred) green = gtk.ToggleButton("Green") green.set_size_request(80, 35) green.connect("clicked", self.ongreen) blue = gtk.ToggleButton("Blue") blue.set_size_request(80, 35) blue.connect("clicked", self.onblue) self.darea = gtk.DrawingArea() self.darea.set_size_request(150, 150) self.darea.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black")) fixed = gtk.Fixed() fixed.put(red, 30, 30) fixed.put(green, 30, 80) fixed.put(blue, 30, 130) fixed.put(self.darea, 150, 30) self.add(fixed) self.show_all() def onred(self, widget): if widget.get_active(): self.color[0] = 65535 else: self.color[0] = 0 self.darea.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(self.color[0], self.color[1], self.color[2])) def ongreen(self, widget): if (widget.get_active()): self.color[1] = 65535 else: self.color[1] = 0 self.darea.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(self.color[0], self.color[1], self.color[2])) def onblue(self, widget): if (widget.get_active()): self.color[2] = 65535 else: self.color[2] = 0 self.darea.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(self.color[0], self.color[1], self.color[2])) PyApp() gtk.main() ``` 在我們的示例中,我們顯示了三個切換按鈕和一個`DrawingArea`。 我們將區域的背景色設置為黑色。 切換按鈕將切換顏色值的紅色,綠色和藍色部分。 背景顏色取決于我們按下的切換按鈕。 ```py self.color = [0, 0, 0] ``` 這是將使用切換按鈕更新的顏色值。 ```py red = gtk.ToggleButton("Red") red.set_size_request(80, 35) red.connect("clicked", self.onred) ``` `ToggleButton`小部件已創建。 我們將其大小設置為`80x35`像素。 每個切換按鈕都有其自己的處理器方法。 ```py self.darea = gtk.DrawingArea() self.darea.set_size_request(150, 150) self.darea.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("black")) ``` `DrawingArea`小部件是顯示顏色的小部件,由切換按鈕混合。 開始時,它顯示為黑色。 ```py if widget.get_active(): self.color[0] = 65535 else: self.color[0] = 0 ``` 如果按下切換按鈕,我們將相應地更改顏色的 R,G 或 B 部分。 ```py self.darea.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(self.color[0], self.color[1], self.color[2])) ``` 我們更新`DrawingArea`小部件的顏色。 ![ToggleButton widget](https://img.kancloud.cn/ee/54/ee54f0cea07953d8643b235c312c8b44_358x268.jpg) 圖:`ToggleButton` widget ## `Calendar` 我們最終的窗口小部件是`Calendar`小部件。 它用于處理日期。 `calendar.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example demonstrates the Calendar widget # # author: jan bodnar # website: zetcode.com # last edited: February 2009 import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Calendar") self.set_size_request(300, 270) self.set_position(gtk.WIN_POS_CENTER) self.set_border_width(2) self.label = gtk.Label("...") calendar = gtk.Calendar() calendar.connect("day_selected", self.on_day_selected) fix = gtk.Fixed() fix.put(calendar, 20, 20) fix.put(self.label, 40, 230) self.add(fix) self.connect("destroy", gtk.main_quit) self.show_all() def on_day_selected(self, widget): (year, month, day) = widget.get_date() self.label.set_label(str(month) + "/" + str(day) + "/" + str(year)) PyApp() gtk.main() ``` 我們有`Calendar`小部件和`Label`。 從日歷中選擇的日期顯示在標簽中。 ```py calendar = gtk.Calendar() ``` `Calendar`小部件已創建。 ```py (year, month, day) = widget.get_date() self.label.set_label(str(month) + "/" + str(day) + "/" + str(year)) ``` 在`on_day_selected()`方法中,我們檢索當前選擇的日期,并更新標簽。 ![Calendar](https://img.kancloud.cn/c3/c5/c3c580b93d294a889e62fd2218014497_308x298.jpg) 圖:`Calendar` 在 PyGTK 教程的這一章中,我們完成了有關 PyGTK 小部件的討論。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看