Python 入門指南 5.0
exercise3407.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 | # 從標準程式庫引入 Tk from tkinter import * # 從 tkinter 引入 font from tkinter import font # 從 tkinter 引入 ttk from tkinter import ttk # 從 random 引入 randint from random import randint # 從 exercise2303 引入 Dice from exercise2303 import Dice # 練習用的視窗類別 class DiceGUI(ttk.Frame): def __init__(self, master): ttk.Frame.__init__(self, master) self.winfo_toplevel().title("擲骰子遊戲") self.root = master self.grid() self.label_font = font.Font(master, font="SF 48") self.createWidgets() self.style = ttk.Style() self.style.theme_use("alt") self.dice1 = Dice() self.dice2 = Dice() def createWidgets(self): self.label1 = Label(self) self.label1["text"] = "" self.label1["width"] = 10 self.label1["height"] = 10 self.label1["bg"] = "white" self.label1["fg"] = "black" self.label1["font"] = self.label_font self.label1.grid(row=0, column=0, sticky=N) self.label2 = Label(self) self.label2["text"] = "" self.label2["width"] = 10 self.label2["height"] = 10 self.label2["bg"] = "white" self.label2["fg"] = "black" self.label2["font"] = self.label_font self.label2.grid(row=0, column=1, sticky=N) self.button = Button(self) self.button["text"] = "按我" self.button["width"] = 20 self.button["command"] = self.do_something self.button.grid(row=1, column=0, columnspan=2, sticky=N) def update_text(self, current_frame): if current_frame < 10: self.label1.config(text=str(randint(1, 6))) self.label1["bg"] = "silver" self.label2.config(text=str(randint(1, 6))) self.label2["bg"] = "silver" self.button.config(state=DISABLED) self.root.after(200, self.update_text, current_frame + 1) else: self.button.config(state=NORMAL) self.label1["bg"] = "white" self.label1.config(text=str(self.dice1)) self.label2["bg"] = "white" self.label2.config(text=str(self.dice2)) def do_something(self): self.dice1 = Dice() self.dice2 = Dice() self.update_text(0) # 執行部分 if __name__ == '__main__': # 建立 Tk 應用物件 root = Tk() # 建立視窗物件 app = DiceGUI(master=root) # 呼叫維持視窗運作的 mainloop() root.mainloop() # 檔名: exercise3407.py # 說明:《Python入門指南》的練習 # 網站: http://kaiching.org # 作者: 張凱慶 # 時間: 2023 年 11 月 |