<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # PyGTK 中的布局管理 > 原文: [http://zetcode.com/gui/pygtk/layout/](http://zetcode.com/gui/pygtk/layout/) 在 PyGTK 教程的這一章中,我們將展示如何在窗口或對話框中布置窗口小部件。 在設計應用的 GUI 時,我們決定要使用哪些小部件以及如何在應用中組織這些小部件。 為了組織窗口小部件,我們使用專門的不可見窗口小部件,稱為布局容器。 在本章中,我們將提到`Alignment`,`Fixed`,`VBox`和`Table`。 ## `Fixed` `Fixed`容器將子窗口小部件放置在固定位置并具有固定大小。 此容器不執行自動布局管理。 在大多數應用中,我們不使用此容器。 我們在某些專業領域使用它。 例如游戲,使用圖表的專用應用,可以移動的可調整大小的組件(如電子表格應用中的圖表),小型教育示例。 `fixed.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example demonstrates a Fixed # container 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("Fixed") self.set_size_request(300, 280) self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(6400, 6400, 6440)) self.set_position(gtk.WIN_POS_CENTER) try: self.bardejov = gtk.gdk.pixbuf_new_from_file("bardejov.jpg") self.rotunda = gtk.gdk.pixbuf_new_from_file("rotunda.jpg") self.mincol = gtk.gdk.pixbuf_new_from_file("mincol.jpg") except Exception, e: print e.message sys.exit(1) image1 = gtk.Image() image2 = gtk.Image() image3 = gtk.Image() image1.set_from_pixbuf(self.bardejov) image2.set_from_pixbuf(self.rotunda) image3.set_from_pixbuf(self.mincol) fix = gtk.Fixed() fix.put(image1, 20, 20) fix.put(image2, 40, 160) fix.put(image3, 170, 50) self.add(fix) self.connect("destroy", gtk.main_quit) self.show_all() PyApp() gtk.main() ``` 在我們的示例中,我們在窗口上顯示了三個小圖像。 我們明確指定放置這些圖像的 x,y 坐標。 ```py self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(6400, 6400, 6440)) ``` 為了獲得更好的視覺體驗,我們將背景色更改為深灰色。 ```py self.bardejov = gtk.gdk.pixbuf_new_from_file("bardejov.jpg") ``` 我們從磁盤上的文件加載映像。 ```py image1 = gtk.Image() image2 = gtk.Image() image3 = gtk.Image() image1.set_from_pixbuf(self.bardejov) image2.set_from_pixbuf(self.rotunda) image3.set_from_pixbuf(self.mincol) ``` `Image`是用于顯示圖像的小部件。 它在構造器中使用一個`Pixbuf`對象。 ```py fix = gtk.Fixed() ``` 我們創建`Fixed`容器。 ```py fix.put(image1, 20, 20) ``` 我們將第一個圖像放置在`x = 20`,`y = 20`坐標處。 ```py self.add(fix) ``` 最后,我們將`Fixed`容器添加到窗口中。 ![Fixed](https://img.kancloud.cn/e0/73/e073300df12029fbff7cbb73a9b6288e_308x308.jpg) 圖:固定 ## `Alignment` `Alignment`容器控制其子窗口小部件的對齊方式和大小。 `alignment.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example shows how to use # the Alignment 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("Alignment") self.set_size_request(260, 150) self.set_position(gtk.WIN_POS_CENTER) vbox = gtk.VBox(False, 5) hbox = gtk.HBox(True, 3) valign = gtk.Alignment(0, 1, 0, 0) vbox.pack_start(valign) ok = gtk.Button("OK") ok.set_size_request(70, 30) close = gtk.Button("Close") hbox.add(ok) hbox.add(close) halign = gtk.Alignment(1, 0, 0, 0) halign.add(hbox) vbox.pack_start(halign, False, False, 3) self.add(vbox) self.connect("destroy", gtk.main_quit) self.show_all() PyApp() gtk.main() ``` 在代碼示例中,我們在窗口的右下角放置了兩個按鈕。 為此,我們使用一個水平框和一個垂直框以及兩個對齊容器。 ```py valign = gtk.Alignment(0, 1, 0, 0) ``` 這會將子窗口小部件置于底部。 ```py vbox.pack_start(valign) ``` 在這里,我們將`Alignment`小部件放置到垂直框中。 ```py hbox = gtk.HBox(True, 3) ... ok = gtk.Button("OK") ok.set_size_request(70, 30) close = gtk.Button("Close") hbox.add(ok) hbox.add(close) ``` 我們創建一個水平框,并在其中放置兩個按鈕。 ```py halign = gtk.Alignment(1, 0, 0, 0) halign.add(hbox) vbox.pack_start(halign, False, False, 3) ``` 這將創建一個對齊容器,它將其子窗口小部件放在右側。 我們將水平框添加到對齊容器中,然后將對齊容器包裝到垂直框中。 我們必須記住,對齊容器僅包含一個子窗口小部件。 這就是為什么我們必須使用盒子。 ![Alignment](https://img.kancloud.cn/7f/db/7fdb8fcf675a39b8393870114e5b8d84_268x178.jpg) 圖:對齊 ## `Table` `Table`小部件按行和列排列小部件。 `calculator.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This example shows how to use # the Table container 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("Calculator") self.set_size_request(250, 230) self.set_position(gtk.WIN_POS_CENTER) vbox = gtk.VBox(False, 2) mb = gtk.MenuBar() filemenu = gtk.Menu() filem = gtk.MenuItem("File") filem.set_submenu(filemenu) mb.append(filem) vbox.pack_start(mb, False, False, 0) table = gtk.Table(5, 4, True) table.attach(gtk.Button("Cls"), 0, 1, 0, 1) table.attach(gtk.Button("Bck"), 1, 2, 0, 1) table.attach(gtk.Label(), 2, 3, 0, 1) table.attach(gtk.Button("Close"), 3, 4, 0, 1) table.attach(gtk.Button("7"), 0, 1, 1, 2) table.attach(gtk.Button("8"), 1, 2, 1, 2) table.attach(gtk.Button("9"), 2, 3, 1, 2) table.attach(gtk.Button("/"), 3, 4, 1, 2) table.attach(gtk.Button("4"), 0, 1, 2, 3) table.attach(gtk.Button("5"), 1, 2, 2, 3) table.attach(gtk.Button("6"), 2, 3, 2, 3) table.attach(gtk.Button("*"), 3, 4, 2, 3) table.attach(gtk.Button("1"), 0, 1, 3, 4) table.attach(gtk.Button("2"), 1, 2, 3, 4) table.attach(gtk.Button("3"), 2, 3, 3, 4) table.attach(gtk.Button("-"), 3, 4, 3, 4) table.attach(gtk.Button("0"), 0, 1, 4, 5) table.attach(gtk.Button("."), 1, 2, 4, 5) table.attach(gtk.Button("="), 2, 3, 4, 5) table.attach(gtk.Button("+"), 3, 4, 4, 5) vbox.pack_start(gtk.Entry(), False, False, 0) vbox.pack_end(table, True, True, 0) self.add(vbox) self.connect("destroy", gtk.main_quit) self.show_all() PyApp() gtk.main() ``` 我們使用`Table`小部件創建一個計算器框架。 ```py table = gtk.Table(5, 4, True) ``` 我們創建一個具有 5 行 4 列的表小部件。 第三個參數是齊次參數。 如果設置為`true`,則表中的所有小部件都具有相同的大小。 所有窗口小部件的大小等于表容器中最大的窗口小部件。 ```py table.attach(gtk.Button("Cls"), 0, 1, 0, 1) ``` 我們在表格容器上附加一個按鈕。 到表格的左上方單元格。 前兩個參數是單元格的左側和右側,后兩個參數是單元格的頂部和底部。 ```py vbox.pack_end(table, True, True, 0) ``` 我們將表格小部件打包到垂直框中。 ![Calculator skeleton](https://img.kancloud.cn/34/bf/34bf69715f11dc1f5ad7fcdd190b63f1_258x258.jpg) 圖:計算機骨架 ## 窗口 接下來,我們將創建一個更高級的示例。 我們顯示一個可以在 JDeveloper IDE 中找到的窗口。 `windows.py` ```py #!/usr/bin/python # ZetCode PyGTK tutorial # # This is a more complicated layout # example # # 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("Windows") self.set_size_request(300, 250) self.set_border_width(8) self.set_position(gtk.WIN_POS_CENTER) table = gtk.Table(8, 4, False) table.set_col_spacings(3) title = gtk.Label("Windows") halign = gtk.Alignment(0, 0, 0, 0) halign.add(title) table.attach(halign, 0, 1, 0, 1, gtk.FILL, gtk.FILL, 0, 0); wins = gtk.TextView() wins.set_editable(False) wins.modify_fg(gtk.STATE_NORMAL, gtk.gdk.Color(5140, 5140, 5140)) wins.set_cursor_visible(False) table.attach(wins, 0, 2, 1, 3, gtk.FILL | gtk.EXPAND, gtk.FILL | gtk.EXPAND, 1, 1) activate = gtk.Button("Activate") activate.set_size_request(50, 30) table.attach(activate, 3, 4, 1, 2, gtk.FILL, gtk.SHRINK, 1, 1) valign = gtk.Alignment(0, 0, 0, 0) close = gtk.Button("Close") close.set_size_request(70, 30) valign.add(close) table.set_row_spacing(1, 3) table.attach(valign, 3, 4, 2, 3, gtk.FILL, gtk.FILL | gtk.EXPAND, 1, 1) halign2 = gtk.Alignment(0, 1, 0, 0) help = gtk.Button("Help") help.set_size_request(70, 30) halign2.add(help) table.set_row_spacing(3, 6) table.attach(halign2, 0, 1, 4, 5, gtk.FILL, gtk.FILL, 0, 0) ok = gtk.Button("OK") ok.set_size_request(70, 30) table.attach(ok, 3, 4, 4, 5, gtk.FILL, gtk.FILL, 0, 0); self.add(table) self.connect("destroy", gtk.main_quit) self.show_all() PyApp() gtk.main() ``` 該代碼示例顯示了如何在 PyGTK 中創建類似的窗口。 ```py table = gtk.Table(8, 4, False) table.set_col_spacings(3) ``` 該示例基于`Table`容器。 列之間將有 3px 的間距。 ```py title = gtk.Label("Windows") halign = gtk.Alignment(0, 0, 0, 0) halign.add(title) table.attach(halign, 0, 1, 0, 1, gtk.FILL, gtk.FILL, 0, 0); ``` 這段代碼創建了一個向左對齊的標簽。 標簽放置在`Table`容器的第一行中。 ```py wins = gtk.TextView() wins.set_editable(False) wins.modify_fg(gtk.STATE_NORMAL, gtk.gdk.Color(5140, 5140, 5140)) wins.set_cursor_visible(False) table.attach(wins, 0, 2, 1, 3, gtk.FILL | gtk.EXPAND, gtk.FILL | gtk.EXPAND, 1, 1) ``` 文本視圖小部件跨越兩行兩列。 我們使小部件不可編輯并隱藏光標。 ```py valign = gtk.Alignment(0, 0, 0, 0) close = gtk.Button("Close") close.set_size_request(70, 30) valign.add(close) table.set_row_spacing(1, 3) table.attach(valign, 3, 4, 2, 3, gtk.FILL, gtk.FILL | gtk.EXPAND, 1, 1) ``` 我們將關閉按鈕放在文本視圖小部件旁邊的第四列中。 (我們從零開始計數)將按鈕添加到對齊小部件中,以便可以將其對齊到頂部。 ![Windows](https://img.kancloud.cn/28/82/2882f5030b0b821bb79ced8c120a67be_308x278.jpg) 圖:窗口 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>

                              哎呀哎呀视频在线观看