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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Custom Widgets 在編寫照片管理器時,我需要使用滾動畫布來顯示照片。我找不到滾動畫布小部件的通用候選對象,但在網絡上發現了幾種可行的變體。因此,我實現了對用戶設計的自定義小部件的支持,這些小部件可以在PAGE中進行操作,但需要用戶提供Python實現。因此,如果我遺漏了某些內容,并且可以想到它的tkinter實現,則PAGE可以處理它。 PAGE將“自定義”小部件顯示為帶有標題“自定義小部件”的文本小部件,并且可以像放置任何其他小部件一樣放置和調整大小。但是,由于尚未在PAGE中定義窗口小部件,因此談論在屬性編輯器中修改屬性是沒有意義的,除了“ variant”是在4.15中新增并在下面進行描述的。在4.15版中,屬性編輯器不顯示其他屬性。所有其他屬性必須在小部件定義代碼中處理。生成的Python將其稱為在支持模塊中定義的類。為了允許在支持模塊完成之前執行GUI,支持模塊中包含以下行: ~~~ Custom = Frame ~~~ 然后,用戶使用自己選擇的,將其自定義窗口小部件的代碼作為一個類插入,并在該代碼后加上以下一行: ~~~ Custom = <class_name> ~~~ 這就是將您放置在GUI中的小部件與支持模塊中的實現類代碼鏈接起來的魔力。請參閱自定義小部件示例。 當然,自定義窗口小部件的Python實現可以在一個單獨的Python模塊中,該模塊可以導入到支持模塊中。 在版本4.15中,自定義小部件的概念已擴展了兩種方式。首先,現在可以在GUI中包含多個自定義窗口小部件。 其次,在同一個GUI中也可能有不止一種自定義窗口小部件。本質上實現的是一個帶有各種變體的Custom窗口小部件,每個變體都通過單獨的用戶提供的Python實現來實現。為此,PAGE為“自定義”窗口小部件賦予了新屬性“變量”,可以像在其他任何窗口小部件中的任何其他屬性一樣在“屬性編輯器”中對其進行修改。 variant屬性創建一個單獨的名稱,以在GUI模塊中使用,并與單獨的Python小部件實現綁定。如果為屬性指定了值(名稱),則該值將附加到名稱“自定義”后,并且在生成Python代碼時,將使用擴展名作為類名。如果variant屬性留空,則類名將像以前一樣是“ Custom”。例如,如果為項目d中的小部件“ Custom1”指定了變量“ p”,為小部件“ Custom2”指定了變量“ q”,則在GUI模塊“ d.py”中生成了以下幾行: ~~~ self.Custom1 = d_support.Customp(top) self.Custom1.place(relx=0.35, rely=0.24, relheight=0.16, relwidth=0.21) self.Custom2 = d_support.Customq(top) self.Custom2.place(relx=0.42, rely=0.62, relheight=0.16, relwidth=0.21) ~~~ 并且在支持模塊“ d_support.py”中生成以下內容: ~~~ Customp = Frame Customq = Frame ~~~ 用戶將名稱“ Custom\_p”和“ Custom\_q”更改為他或她希望使用的自定義窗口小部件類的名稱,并且您已為其使用Python實現。 因此,在GUI中有兩個不同的自定義小部件。 顯然,自定義窗口小部件的數量不限于兩個。 我敦促您仔細查看[ScrolledCheckedListBox]()示例,以查看使用Greg Walters編寫的自定義小部件的絕佳示例。 Greg Walters也編寫了廣泛的自述文件。 此示例有一個自定義小部件和其他幾個PAGE小部件。 將其視為名稱問題。 在上面的代碼段中,Customp是在支持模塊中定義的Class的名稱或同義詞,Custom1是通過執行Customp類創建的對象或實例的名稱。 如果希望在支持模塊中操作Customp實例,則將該實例稱為w.Custom1。 在支持模塊中,該行: ~~~ Customp = Frame ~~~ 將類重命名為Frame,以便在生成GUI模塊和支持模塊時可以執行GUI模塊,并且Customp小部件將顯示為框架。 當您開始編寫“真實的”支持模塊以使用自己的“本地”窗口小部件時,可以替換上面的代碼行,或使用以下代碼: ~~~ Customp = Homegrown ~~~ 使用兩行代碼都可以,這相當于兩次為Customp分配名稱。 只要確保最后一行緊跟Frame即可。 在導入支持模塊時執行分配,這是在實例化Customp類之前發生的,因此使用了預期的類定義Homegrown。
                  <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>

                              哎呀哎呀视频在线观看