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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 范例 示例是我了解Tkinter的主要方式,以及如何編寫用于構建GUI的代碼。不幸的是,很難找到例子。格雷森(Grayson)的書多年來提供了巨大幫助,最近,吉爾赫姆·波羅(Guilherme Polo)分發的pyttk樣本大有幫助。 Tcl的官方文檔幾乎僅限于手冊頁,而手冊頁對Tkinter入門沒有太大幫助。 Tcl Developers網站上的教程僅在最近才包含Python代碼。在我能夠在屏幕上看到一個平移的窗口或滾動的目錄之前,需要進行大量的實驗。在示例子目錄中有幾個有趣的示例。 因此,可以嘗試在GUI模塊中更改大小,顏色,字體等的示例,如果他不重新生成支持模塊,它們仍然可以工作。至少,人們可以看到其中的一些可能性。當然,我創建了其中的一些菜單,例如口味較差的菜單,只是為了說明一些可能性。您可能會遇到一些困難,這可能是由于我的系統與您的系統之間缺少字體或字體不匹配等引起的。 嘗試示例的最簡單方法是轉到一個頁面/示例子目錄,然后(1)針對該目錄中的“ .tcl”文件運行頁面,并(2)執行生成的GUI模塊。大多數示例只有一個“ .tcl”。有幾個示例有兩個GUI,通常有一個“ main.tcl”; vrex的主GUI是“ vrex.tcl”,在“ two”中,主GUI模塊定義是“ w1.tcl”。 如果嘗試通過在Tcl文件上執行PAGE來保存示例,請注意,生成和保存支持文件將替換所包含的支持文件,這些支持文件將成為備份版本,除非還原相應的文件,否則應用程序的功能將丟失。 ## 目錄瀏覽器 此示例包含一個滾動的treeview小部件,該小部件顯示一個UNIX目錄樹。 該示例的源代碼在examples/directory-tree.py中。它是Polo示例的重做,其中包含可打開和關閉的文件夾圖標。 Polo的示例基于[bitwalk的目錄瀏覽器](http://bitwalk.blogspot.com/2008/01/ttktreeview.html). ![](https://img.kancloud.cn/29/8f/298fd787bfd973d53a427414548b30f5_617x455.png) ## Vrex 過去,我曾在Python中使用過許多正則表達式,并利用Visual Regexp在編寫和測試這些正則表達式時具有很大的優勢,并認為用Python重寫程序會很有趣,因為 * 這將說明PAGE的重要功能。 * 它本身就是一個有用的程序。 確實,我一直都在使用它。 * 原始版本是用Tcl / Tk編寫的,因此使用Tcl的正則表達式處理,這與Python中的稍有不同。 因此,使用Python正則表達式處理的所有Python版本都適用于Python。 * 原始程序具有零文檔。 我永遠無法弄清楚目前的所有設施。 (最新版本只有一頁文檔。)我想要一個可以記錄的版本。 * Vrex使用兩個頂級小部件; 下面顯示的主GUI和幫助工具的單獨窗口。 * 本示例說明了有關PAGE支持的幾點:構建菜單,使用平移窗口,文本著色,兩個滾動文本窗口之間的同步。 ![](https://img.kancloud.cn/7b/c0/7bc0eff123dfc1e20a9336a891db5bcf_611x667.png) GUI的主要部分是一個三窗格窗口,用于在前兩個窗口中輸入正則表達式和樣本,而第三窗格則根據底部按鈕的選擇顯示匹配結果。 此有用程序中說明的PAGE的某些功能包括: * 滾動的文本小部件嵌套在標簽框架內。 * 使用兩個單獨的GUI,一個用于程序的主要功能,另一個用于幫助窗口。 * 在滾動的文本窗口中為文本著色。 ## Vrex操作 簡而言之,Vrex的工作方式如下: 將要測試的正則表達式輸入到頂部文本框中,將作為正則表達式主題的樣本輸入到中間文本框中。 可以使用“文件”菜單將文件加載到文本框中,也可以直接鍵入條目或使用操作系統的常規剪切和粘貼功能。 用戶還可以使用“文件”菜單保存正則表達式和樣本。 * 按下執行按鈕將嘗試進行匹配。 同樣,將著色應用于正則表達式和樣本。 對正則表達式進行著色,以顯示正則表達式的各個部分要分別提取。 如果匹配成功,則樣品的相應部分將以相同的顏色顯示。 * 通過選擇標記為match,1、2,…,9的按鈕行之一,對應于提取的子模式的樣本部分將顯示在match窗口中。 * 您可以使用“文件”菜單加載以保存正則表達式和示例。 * 退出按鈕終止程序。 * “文件”菜單還具有一個“退出”條目,該條目終止程序。 * “幫助”菜單將打開第二個GUI,其中包含具有幫助信息的ScrolledText小部件。 正則表達式應著色,以不同的顏色顯示要提取的部分以及樣本的匹配部分。 如果然后選擇“匹配”,則樣品的該匹配部分將顯示在“匹配”文本框中。 選擇1,將顯示與子表達式匹配的部分,依此類推。 您還可以將文件加載到示例窗口中,從而對許多字符串運行正則表達式。 ## 進度條 此示例顯示了進度條窗口小部件的用法,但主要用于說明具有兩個頂層窗口的應用程序。 它顯示了主窗口如何與導入的模塊中的變量和過程進行交互,該模塊實際上顯示了進度條。 所示的重要功能包括輔助頂層窗口的創建和銷毀,以及主GUI支持代碼需要訪問在另一個進度條窗口的支持模塊中定義和操作的Tkinter變量的事實。 ## Complex 這實際上不是一個什么都不做的示例,但是確實顯示了一個平移窗口在一個平移窗口內的嵌套以及一個筆記本小部件嵌套在一個平移窗口內的情況。 順便說一句,您可以放大頂層窗口,然后將整個窗格復制并粘貼到新位置。 ## Menus 有兩個目錄page / examples / menu和page / examples / popup演示菜單。 菜單目錄包含一個相當極端的菜單欄示例。請注意,我不主張將其作為要使用的樣式。它只是建議一些可以完成的事情。 盡管此示例在Linux Mint 13機器上可以正常運行,但在XP機器上卻無法正常運行。構思的方式是,菜單欄左側的標簽右側有一個小圖像。但是,在XP上,標簽和圖像均未顯示。得到的是“(圖像)”。奇怪的是,如果您下幾個級別,則其中一個檢查按鈕的左側會顯示一個圖像。我認為這是Tk的問題。 popup目錄包含一個主要示例“ popup”,該示例僅激活一個彈出菜單,然后該菜單激活未將任何參數傳遞給回調函數的回調函數。該示例有一個帶有兩個按鈕的頂層窗口,并且每個窗口都附加了一個不同的上下文菜單。要查看彈出菜單,請右鍵單擊按鈕。您會注意到兩個菜單具有不同的顏色。 另一個示例是“位置”,它通過一個附加命令和一個附加回調例程來擴展彈出窗口示例,并使用唯一的位置參數通過變量參數列表將該回調函數傳遞給參數1。最后,“關鍵字”示例通過關鍵字參數傳遞參數1來進行類似的操作。 ## standard.tcl 這只是我支持的每個標準Tk小部件的頂層窗口。 它只是表明我可以為每個生成有效的Python代碼。 小寫字母“ s”強調其作用不大。 ## themed.tcl 如上所述,主題小部件。 ## Canvas Paul Krieger捐贈了一個畫布示例,該示例可以在\<page_dir> / examples / canvas目錄中找到。 非常感謝,因為我對畫布小部件不滿意。 ![](https://img.kancloud.cn/fb/b9/fbb967e6449d97ecc0087135a7d192cf_612x485.png) ## Clone 這是一個位于示例/克隆中的怪異示例,其中main.py創建了一個GUI,該GUI呈現了一個“ Make Two”按鈕,該按鈕導致創建了兩個“被調用” GUI實例,但是具有不同的位置和背景顏色特征。這樣,被調用的GUI便可以創建具有不同位置和背景顏色的克隆。 這也是將用戶參數傳遞給創建模塊的示例,然后將其傳遞給支持模塊中的“ init”功能,在其中對顏色和位置進行操作。 如果tcl中選擇的字體在Windows計算機上不可用,則在Windows上執行此示例可能會出現問題。在這種情況下,字體將默認為TkDefaultFont。我的Linux系統和XP盒均可使用Courier New。 此示例顯示了兩種定義被調用GUI中與標簽小部件關聯的textvarible的方法。一種方法是在支持模塊中(自動)定義為Tkinter變量。第二種方法是通過在屬性編輯器中將其定義為“ self.\<variable>”,再次自動將其定義為GUI模塊中的變量。 PAGE同時支持這兩種方法,但是我現在看不到使用第二種方法的優勢,而且我認為這更加令人困惑。 ## Calendar 使用新的返工方案構建日歷顯示的小示例。 它位于示例/日歷子文件夾中。 ![](https://img.kancloud.cn/a8/ec/a8eca9e9ddeb5296f4537e99703651a1_238x289.png) ## CPU Info 另一個小示例顯示Linux系統上lscpu的輸出。 由于它使用Linux命令,因此無法在Windows計算機上正確執行。 ![](https://img.kancloud.cn/77/79/77791382274c8fe21765c9bd79456375_500x459.png) ## Bind 此子目錄包含一個綁定示例,其中按鈕通過屬性編輯器中設置的命令屬性使用\<Button-1>響應選擇,并通過使用“綁定窗口”創建的綁定命令響應\<Button-2>和\<Button-3>。 command屬性中命名的函數與bind語句中的函數不同,因為在后一種情況下,事件對象作為參數傳遞給事件處理程序,因此該處理程序必須具有一個容納事件對象的參數。 ## Custom Widgets ### ScrolledFrame 此示例位于\<page-dir> / examples / custom / canvas中,顯示了如何使用從Web借來的自定義小部件ScrolledFrame。 該小部件用于在滾動畫布上顯示100個按鈕。 當用戶使用canvas.tcl打開PAGE時,他會看到 ![](https://img.kancloud.cn/a8/b4/a8b4c65690c83583291733a31e68f8c6_612x485.png) 該圖顯示了填充自定義窗口小部件的頂層窗口。 由于PAGE未知窗口小部件的結構,因此,除調整大小或放置外,無法顯示或操縱它。 當支持模塊custom_support.py通過Python Tkinter實現完成時,執行將產生 ![](https://img.kancloud.cn/66/78/6678ac82987c127c6f5b40a2d2470a0c_612x485.png) 主要模塊是canvas.py,魔術包含在canvas_support.py中,其中包含實現類的Python / Tkinter代碼在canvas.py中,該行中引用了自定義窗口小部件: ~~~ self.Custom1 = canvas_support.Custom(top) ~~~ 在canvas \ _support.py中,代碼行: ~~~ Custom = Frame ~~~ 由PAGE生成,導致“自定義”小部件實現為“框架”小部件。 換句話說,名稱Custom表示類框架。 這使PAGE可以將Custom小部件顯示為帶有“ Custom小部件”注釋的Frame小部件,并執行生成的Python代碼以將Custom小部件顯示為Frame,然后將tkinter實現包括在支持模塊中。 在canvas \ _support.py底部,由用戶添加的ScrolledFrame類的實現開始如下: ~~~ import Tkinter # I found this code on the web at # http://tkinter.unpythonic.net/wiki/ScrolledFrame and thought it would # implement a canvas widget that I could use with PAGE, but I don't understand # it well enough to put it in my supported widgets. GM_KEYS = set( vars(Tkinter.Place).keys() + vars(Tkinter.Pack).keys() + vars(Tkinter.Grid).keys() ) class ScrolledFrame(object): _managed = False # XXX These could be options x_incr = 10 y_incr = 10 def __init__(self, master=None, **kw): self.width = kw.pop('width', 200) self.height = kw.pop('height', 200) self._canvas = Tkinter.Canvas(master, **kw) self.master = self._canvas.master self._hsb = Tkinter.Scrollbar(orient='horizontal', command=self._canvas.xview) self._vsb = Tkinter.Scrollbar(orient='vertical', command=self._canvas.yview) self._canvas.configure( xscrollcommand=self._hsb.set, ... Custom = ScrolledFrame ~~~ canvas \ _support.py中的最后一行代碼使名稱“ Custom”引用類ScrolledFrame。 它會覆蓋以前對Frame類的引用。 正是這種魔咒,使canvas.py中的Custom1小部件實現為ScrolledFrame類的實例。 ### Lib Demo 這是使用ScrolledFrame小部件的第二個示例。 為了測試PAGE,我重新編碼了我幾年前使用PAGE編寫的照片庫程序,以生成該程序所需的七個GUI。 對于此示例,我將其簡化為僅一個GUI,該GUI僅提供一個圖像的多個顯示。 該演示生成以下窗口: ![](https://img.kancloud.cn/35/63/3563d032c782620b69e68084ff86d1a7_612x523.png) 它將特定照片的縮略圖的重復副本顯示為Button小部件上的圖像。 如果使用Button-1選擇圖像按鈕,則會出現一條消息,其中包含按鈕的索引。 如果使用Button-3選擇一個按鈕,則會出現一個彈出菜單。 頂層窗口和彈出菜單中的“縮放級聯”菜單均允許更改顯示圖像的大小。 該示例中僅包含一張圖像,并且顯示30次。 填滿頂層窗口后,程序將確定可水平放置的最大圖像數量,并將該數量放置在每一行中。 如果圖像太大而無法容納,則每行顯示一張圖像,但會溢出邊緣。 我已包含位于共享模塊中的忙光標代碼。 但是,刷新是如此之快,幾乎看不到其他光標。 ### ScrolledCheckedListBox ![](https://img.kancloud.cn/69/e6/69e648dce1b0c72f5f1aa1d8235e6c77_537x549.png) 由格雷格·沃爾特斯(Greg Walters)編寫的這個帶注釋的示例是我所見過的定義和使用自定義小部件的最佳示例。 其中包括大量的用法說明。 ### Dual ![](https://img.kancloud.cn/06/c3/06c30ce89d185d4c752d10c6a3a57aaf_1105x850.png) 此目錄包含一個GUI示例,其中包含兩個不同的自定義小部件ScrolledCheckedListBox和ScrolledFrame,這些小部件是從PAGE外部編寫的。變體為“ \_d”和“ \_g”,它們在GUI模塊中產生類名“ Custom\_d”和“ Custom\_g”,并在支持模塊中重命名為ScrolledFrame和ScrolledCheckedListBox。 ScrolledCheckedListBox由Greg Walters編寫,是從他的ScrolledCheckedListBox示例中借來的,然后將其塞入新的“雙”頂級小部件中,并重新整理了我的lib\_demo自定義小部件。我原來的ScrolledFrame被證明在滾動條上有問題,因此我沿從ScrolledCheckedListBox小部件借來的行對其進行了修改。頂層還有一個借用lib\_demo的菜單欄,因此這些條目適用于ScrolledFrame。 有一個Tsizegrip小部件,可幫助調整GUI的大小。事件“ ”綁定到Tsizegrip,以便在調整大小末尾釋放Button1時,將刷新右側的Custom小部件。 您可能會注意到,ScrolledCheckedListBox.py中有很多特殊代碼,以使該自定義窗口小部件可在Windows和Linux上使用。 ## Two 這是一個包含兩個簡單窗口w1和w2的項目示例。 它說明了窗口1的支持模塊如何創建窗口2并向其傳遞用于設置標簽的參數。 它還具有TProgressbar小部件的另一個示例。 ## Rplay ![](https://img.kancloud.cn/0a/b6/0ab6171a8a26689792b79fc3862fb5fb_823x720.png) 這個示例是作為Raspberry Pi的音樂服務器編寫的,該服務器從Linux盒子上存儲的CD映像驅動我的音頻系統。 我每天都使用這個程序。 在此示例中,我有許多不同的綁定,并利用了一些通過實驗發現的文本小部件技巧,并使用了多個線程來運行mp3播放器,同時保持GUI相當敏感。 ## Hide 一個示例顯示了如何隱藏小部件并在以后檢索它。 這是動態窗口小部件的示例。 請參閱[動態窗口小部件]()。 ## Labelframe 格雷格·沃爾特斯(Greg Walters)貢獻了此示例,以幫助調試有關處理標簽框架小部件的最新修復程序。 ![](https://img.kancloud.cn/dc/94/dc947cd7f0af11916d4911231fa03933_1045x681.png)
                  <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>

                              哎呀哎呀视频在线观看