Python 入門指南 5.0

encrypt_view.py

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# 從標準程式庫引入 Tk
from tkinter import *
# 從 tkinter 引入 ttk
from tkinter import ttk

# Encrypt 的 View 類別
class EncryptView(ttk.Frame):
    # 建構子設定初值
    def __init__(self, master=None):
        # 呼叫父類別的建構子
        ttk.Frame.__init__(self, master)
        # 設定視窗標題
        self.winfo_toplevel().title("編密碼小工具")
        # 使用格子版面管理員
        self.grid()
        # 呼叫建立視窗元件的方法
        self.createWidgets()
        # 建立樣式屬性
        self.style = ttk.Style()
        # 設定樣式主題
        self.style.theme_use("alt")
        # 依次取得每一個視窗元件
        for child in self.winfo_children():
            # 將視窗元件加入邊界
            child.grid_configure(padx=5, pady=3)

    # 建立所有視窗元件
    def createWidgets(self):
        # 建立文字輸入標籤
        self.input_text = ttk.Label(self)
        # 設定文字輸入標籤的文字
        self.input_text["text"] = "輸入:"
        # 設定文字輸入標籤在格子的位置
        self.input_text.grid(row=0, column=0,
                             sticky=N+E)
        # 建立文字輸入欄位
        self.input_field = ttk.Entry(self)
        # 設定文字輸入欄位的寬度
        self.input_field["width"] = 77
        # 設定文字輸入欄位在格子的位置
        self.input_field.grid(row=0, column=1,
                              columnspan=6,
                              sticky=N+W)
        # 設定 GUI 開啟後聚焦在文字輸入欄位
        self.input_field.focus()
        # 設定文字輸出標籤
        self.output_text = ttk.Label(self)
        # 設定文字輸出標籤的文字
        self.output_text["text"] = "輸出:"
        # 設定文字輸出標籤格子的位置
        self.output_text.grid(row=1, column=0,
                              sticky=N+E)
        # 設定文字輸出欄位
        self.output_field = ttk.Entry(self)
        # 設定文字輸出欄位的寬度
        self.output_field["width"] = 77
        # 設定文字輸出欄位在格子的位置
        self.output_field.grid(row=1, column=1,
                               columnspan=6,
                               sticky=N+W)
        # 設定文字輸出欄位無法輸入文字
        self.output_field.config(state="disabled")
        # 設定新建按鈕在格子的位置
        self.new_button = ttk.Button(self)
        # 設定新建按鈕的文字
        self.new_button["text"] = "新建"
        # 設定新建按鈕在格子的位置
        self.new_button.grid(row=2, column=0,
                             sticky=N+W)
        # 設定載入按鈕
        self.load_button = ttk.Button(self)
        # 設定載入按鈕的文字
        self.load_button["text"] = "載入"
        # 設定載入按鈕在格子的位置
        self.load_button.grid(row=2, column=1,
                              sticky=N+W)
        # 設定存檔按鈕
        self.save_button = ttk.Button(self)
        # 設定存檔按鈕的文字
        self.save_button["text"] = "存檔"
        # 設定存檔按鈕在格子的位置
        self.save_button.grid(row=2, column=2,
                              sticky=N+W)
        # 設定編碼按鈕
        self.encode_button = ttk.Button(self)
        # 設定編碼按鈕的文字
        self.encode_button["text"] = "編碼"
        # 設定編碼按鈕在格子的位置
        self.encode_button.grid(row=2, column=3,
                                sticky=N+W)
        # 設定解碼按鈕
        self.decode_button = ttk.Button(self)
        # 設定解碼按鈕的文字
        self.decode_button["text"] = "解碼"
        # 設定解碼按鈕在格子的位置
        self.decode_button.grid(row=2, column=4,
                                sticky=N+W)
        # 設定清除按鈕
        self.copy_button = ttk.Button(self)
        # 設定清除按鈕的文字
        self.copy_button["text"] = "清除"
        # 設定清除按鈕在格子的位置
        self.copy_button.grid(row=2, column=5,
                              sticky=N+W)
        # 設定拷貝按鈕
        self.clear_button = ttk.Button(self)
        # 設定拷貝按鈕的文字
        self.clear_button["text"] = "拷貝"
        # 設定拷貝按鈕在格子的位置
        self.clear_button.grid(row=2, column=6,
                               sticky=N+W)
        # 設定訊息欄文字標籤
        self.display_text = ttk.Label(self)
        # 設定訊息欄文字標籤的文字
        self.display_text["text"] = "訊息欄"
        # 設定訊息欄文字標籤在格子的位置
        self.display_text.grid(row=3, column=0,
                               columnspan=7,
                               sticky=N+E)

# GUI 執行部分
if __name__ == '__main__':
    # 建立 Tk 應用物件
    root = Tk()
    # 建立視窗物件
    app = EncryptView(master=root)
    # 呼叫維持視窗運作的 mainloop()
    root.mainloop()

# 檔名: encrypt_view.py
# 說明:《Python入門指南》的範例程式
# 網站: http://kaiching.org
# 作者: 張凱慶
# 時間: 2023 年 6 月

上一頁 encrypt.py
回 Python 入門指南 5.0 首頁
下一頁 encrypt_controller.py
回 Python 教材首頁
回程式語言教材首頁