# 具有多個頂級Windows的應用程序
用戶通常會希望構建具有多個頂層窗口的應用程序。 由于PAGE是為僅指定一個這樣的窗口而建立的,用戶如何進行? 我認為最好的方法是為每個頂級窗口創建單獨的模塊,并讓主GUI的支持模塊使用import語句將其導入。 然后可以使用模塊中的創建功能來創建窗口。 此方法用于Vrex示例。 在這里,我使用PAGE為兩個單獨的程序GUI構造框架:
* vrex GUI模塊和關聯的vrex_support模塊。 vrex GUI模塊是程序的主要模塊。
* vrex_help GUI模塊和關聯的vrex_help_support模塊。
我希望當在vrex GUI中選擇“幫助”按鈕時出現vrex_help GUI。 “幫助”按鈕的命令是vrex_support.py中的幫助例程。因此,vrex_support.py中的以下代碼將顯示幫助窗口。
~~~
import vrex_help
def help():
vrex_help.create_Vrex_Help(root)
~~~
當然,在這種情況下,兩個程序之間的交互很少,從而簡化了事情。 如下例所示,參數“ root”將幫助窗口綁定到主窗口。progress_bar示例中使用了相同的技術,該示例顯示了窗口之間的更多交互,包括從主例程內部對進度條窗口的控制。 這兩個模塊是main.py和progress_bar.py。 在main.py中,我們有
~~~
import progress_bar
self.bar = progress_bar.create_Progress_Bar(root)
~~~
在這里,參數root將兩個窗口綁定在一起,并且創建例程返回Progress_Bar對象,該對象允許主GUI訪問Progress_Bar對象的所有功能和屬性,從而允許主GUI推進進度條并關閉進度 酒吧。在python代碼中創建了特殊功能,以方便窗口的創建和銷毀。
~~~
w = None
def create_New_Toplevel_1(root, *args, **kwargs):
'''Starting point when module is imported by another program.'''
global w, w_win, rt
rt = root
w = Toplevel (root)
top = New_Toplevel_1 (w)
unknown_support.init(w, top, *args, **kwargs)
return (w, top)
def destroy_New_Toplevel_1():
global w
w.destroy()
w = None
~~~
可以使用圍繞“ *args,**kwargs”用法構建的標準Python技術將可變數量的參數傳遞給支持模塊的init函數。 例如,您可能有類似以下在雙重示例中使用的代碼:
~~~
p_dict_1 = {'geom': "+200+650", 'instance': 1, 'color' : 'firebrick'}
p_dict_2 = {'geom': "+1000+650", 'instance': 2, 'color' : 'plum'}
def open_two():
print "open_two starts"
firebrick = called.create_Called(root,param=p_dict_1)
plum = called.create_Called(root,param=p_dict_2)
~~~
一個常見的問題是如何在模塊之間共享全局變量。 一個很好的參考是如何在模塊之間共享全局變量?如果您動態創建輔助窗口小部件并希望確保只有一個實例form2,則可以使用以下代碼:
~~~
import form2
# If form2 already exists then destroy it and create it anew. I only want
# one. So I play games with form2_w.
global form2_w
if 'form2_w' in globals()
print 'its there'
form2_w.destroy()
(form2_w, form2_top) = form2.create_New_Toplevel(root)
~~~
- 介紹
- 更新記錄
- X Concepts
- Visual Tcl
- 使用PAGE設計范例
- 項目目錄配置
- Python 2 or Python 3
- Python編碼和UTF-8
- 使用PAGE的簡短說明
- PAGE的狀態
- 安裝
- PAGE界面
- 主菜單
- 子菜單
- 組件工具欄
- 屬性編輯器
- 組件樹
- 綁定操作窗口
- 菜單編輯器
- 首選項窗口
- Python控制臺
- 回調窗口
- 應用窗口
- 顏色對話框
- 顏色
- 雙顯示器
- 默認值和首選項
- Preferences Windows
- Color Preferences
- Font Preferences
- 模塊結構
- 風格和主題
- 使用PAGE
- 命名約定
- 概述
- Toplevel Geometry
- 別名
- 氣球幫助-工具提示
- 選擇和修改組件
- 修改組件位置和尺寸
- 鎖定組件
- 填充容器
- 剪切,復制和粘貼
- Stash and Apply - Propagate Widget Options
- 菜單組件
- 回調函數
- 將事件鏈接到回調函數
- 創建綁定
- 為滾動組件創建綁定
- 定義回調函數
- 查看回調
- 指定字體
- Toplevel Widget
- 相對位置
- Tkinter變量類
- Ttk Widgets
- Scrolled Widgets
- Ttk Notebook and PNotebook
- Ttk Panedwindow
- Ttk Treeview
- Entry
- Ttk Entry
- Ttk Combobox
- Radiobuttons
- 文本和變量的奇異性
- Label
- Listbox
- Spinbox
- Scale and TScale
- TSeparator
- Sizegrip
- Custom Widgets
- Canvas
- 生成,檢查和運行Python GUI
- 創建和保存代碼模塊
- 檢查生成的Python模塊
- 執行Python模塊
- 將生成的Python模塊加載到IDE中
- 具有多個頂級Windows的應用程序
- 修改光標
- 使用圖像
- 動態組件
- 菜單
- 重建
- 自動更新支持模塊
- 重用
- 模板
- 從現有項目中借用組件
- 范例
- 結語