基於tkinter的GUI編程

tkinter:tkinter是綁定了Python的TKGUI工具集,就是Python包裝的Tcl代碼,經過內嵌在Python解釋器內部的Tcl
解釋器實現的,它是Python標準庫的一部分,因此使用它進行GUI編程不須要另外安裝第三方庫的。python

tkinter的簡單使用:編程

 1 #_*_ coding:utf-8 _*_
 2 import tkinter                                       #導入tkinter模塊
 3 
 4 root = tkinter.Tk()                                  #生成root主窗口
 5 label = tkinter.Label(root,text = "Hello,tkinter!")  #生成標籤
 6 label.pack()                                         #將標籤添加到root主窗口
 7 button1 = tkinter.Button(root,text = "button1")      #生成button1
 8 button1.pack(side = tkinter.LEFT)                    #將button1添加到root主窗口
 9 button2 = tkinter.Button(root,text = "button2")      #生成button2
10 button2.pack(side = tkinter.RIGHT)                   #將button2添加到root主窗口
11 root.mainloop()                                      #進入信息循環

tkinter組件:canvas


佈局組件:
組件pack方法參數設置組件的位置:
before:將組件置於其餘之間以前;
after:將組件置於其餘組件以後;
side:組件在主窗口的位置,能夠爲「top」、「bottom」、「left」、「right」;
anchor:組件的對齊方式,頂對齊「n」、底對齊「s」、左對齊「w」、右對齊「e」;ide

組件anchor方法參數經過行列的方法設置組件的位置:
column:組件所在的列起始位置;
columspam:組件的列寬;
row:組件所在的行起始位置;
rowspam:組件的行寬;函數

組件place方法參數經過座標來設置組件的位置:工具

經常使用tkinter組件:
按鈕:oop

 1 #_*_ coding:utf-8 _*_
 2 import tkinter                                       #導入tkinter模塊
 3 
 4 root = tkinter.Tk()                                  #生成root主窗口
 5 label = tkinter.Label(root,text = "Hello,tkinter!")  #生成標籤
 6 label.pack()                                         #將標籤添加到root主窗口
 7 button1 = tkinter.Button(root,
 8                          anchor = tkinter.E,         #指定文本對齊方式
 9                          text = "button1",           #指定按鈕上的文本
10                          width = 40,                 #指定按鈕的寬度,至關於40個字符
11                          height = 5)                 #指定按鈕的高度,至關於5行字符
12 button1.pack()                                       #將按鈕添加到窗口
13 button2 = tkinter.Button(root,
14                          text = "button2",
15                          bg = "blue")                #指定按鈕的背景顏色
16 button2.pack()   
17 button3 = tkinter.Button(root,
18                          text = "button1",
19                          width = 60,
20                          height = 5,
21                          state = tkinter.DISABLED)   #指定按鈕爲禁用狀態
22 button3.pack()
23 root.mainloop()                                      #進入信息循環


文本框:佈局

 1 #_*_ coding:utf-8 _*_
 2 import tkinter                                       #導入tkinter模塊
 3 
 4 root = tkinter.Tk()
 5 entry1 = tkinter.Entry(root,                         #生成單行文本框組件
 6                        show = '*')                   #輸入文本框中的字符被顯示爲「*」
 7 entry1.pack()                                        #將文本框添加到窗口中
 8 entry2 = tkinter.Entry(root,
 9                        show = '#',                   #輸入文本框中的字符被顯示爲「#」
10                        width = 50)                   #將文本框的寬度設置爲50
11 entry2.pack()
12 entry3 = tkinter.Entry(root,
13                        bg = 'red',                   #將文本框的背景色設置爲紅色
14                        fg = 'blue')                  #將文本框的前景色設置爲藍色
15 entry3.pack()
16 entry4 = tkinter.Entry(root,
17                        selectbackground = 'red',     #將選中文本的背景色設置爲紅色
18                        selectforeground = 'gray')    #將選中文本的前景色設置爲灰色
19 entry4.pack()
20 entry5 = tkinter.Entry(root,
21                        state = tkinter.DISABLED)     #將文本框設置爲禁用
22 entry5.pack()
23 edit1 = tkinter.Text(root,                           #生成多行文本框組件
24                      selectbackground='red',         #將選中文本的背景色設置爲紅色
25                      selectforeground='gray')        #將選中文本的前景色設置爲灰色
26 edit1.pack()
27 root.mainloop()                                      #進入信息循環

標籤:post

 1 #_*_ coding:utf-8 _*_
 2 import tkinter                                        #導入tkinter模塊
 3 
 4 root = tkinter.Tk()
 5 label1 = tkinter.Label(root,
 6                        anchor = tkinter.E,            #設置文本的位置
 7                        bg = 'blue',                   #設置標籤背景色
 8                        fg = 'red',                    #設置標籤前景色
 9                        text = 'Python',               #設置標籤中的文本
10                        width = 30,                    #設置標籤的寬度爲30
11                        height = 5)                    #設置標籤的高度爲5
12 label1.pack()
13 label2 = tkinter.Label(root,
14                        text = 'Python GUI\ntkinter',  #設置標籤中的文本,在字符串中使用換行符
15                        justify = tkinter.LEFT,        #設置多行文本爲左對齊
16                        width = 30,
17                        height = 5)
18 label2.pack()
19 label3 = tkinter.Label(root,
20                        text = 'Python GUI\ntkinter',
21                        justify = tkinter.RIGHT,       #設置多行文本爲右對齊
22                        width = 30,
23                        height = 5)
24 label3.pack()
25 label4 = tkinter.Label(root,
26                        text = 'Python GUI\ntkinter',
27                        justify = tkinter.CENTER,      #設置多行文本爲居中對齊
28                        width = 30,
29                        height = 5)
30 label4.pack()
31 root.mainloop()

菜單:ui

 1 #_*_ coding:utf-8 _*_
 2 import tkinter                                        #導入tkinter模塊
 3 
 4 root = tkinter.Tk()
 5 menu = tkinter.Menu(root)                             #生成菜單
 6 submenu = tkinter.Menu(menu,tearoff = 0)              #生成下拉菜單
 7 submenu.add_command(label = 'Open')                   #向下拉菜單中添加Open命令
 8 submenu.add_command(label = 'Save')                   #向下拉菜單中添加Save命令
 9 submenu.add_command(label = 'Close')                  #向下拉菜單中添加Close命令
10 menu.add_cascade(label = 'File',menu = submenu)       #將下拉菜單添加到菜單中
11 submenu = tkinter.Menu(menu,tearoff = 0)              #生成下拉菜單
12 submenu.add_command(label = 'Copy')                   #向下拉菜單中添加Copy命令
13 submenu.add_command(label = 'Paste')                  #向下拉菜單中添加Paste命令
14 submenu.add_separator()                               #向下拉菜單中添加分隔符
15 submenu.add_command(label = 'Cut')                    #向下拉菜單中添加Cut命令
16 menu.add_cascade(label = 'Edit',menu = submenu)       #將下拉菜單添加到菜單中
17 submenu = tkinter.Menu(menu,tearoff = 0)              #生成下拉菜單
18 submenu.add_command(label = 'About')                  #向下拉菜單中添加About命令
19 menu.add_cascade(label = 'Help',menu = submenu)       #將下拉菜單添加到菜單中
20 root.config(menu = menu)
21 root.mainloop()
 1 #_*_ coding:utf-8 _*_
 2 import tkinter                            #導入tkinter模塊
 3 
 4 root = tkinter.Tk()
 5 menu = tkinter.Menu(root,tearoff = 0)     #建立菜單
 6 menu.add_command(label = 'Copy')          #向彈出式菜單中添加Copy命令
 7 menu.add_command(label = 'Paste')         #向彈出式菜單中添加Paste命令
 8 menu.add_separator()                      #向彈出式菜單中添加分隔符
 9 menu.add_command(label = 'Cut')           #向彈出式菜單中添加Cut命令
10 def popupmenu(event):                     #定義右鍵事件處理函數
11     menu.post(event.x_root,event.y_root)  #顯示菜單
12 root.bind('<Button-3>',popupmenu)         #在主窗口中綁定右鍵事件
13 root.mainloop()

單選框和複選框:

 1 #_*_ coding:utf-8 _*_
 2 import tkinter                                 #導入tkinter模塊
 3 
 4 root = tkinter.Tk()
 5 r = tkinter.StringVar()                        #使用StringVar生成字符串變量用於單選框組件
 6 r.set('1')                                     #初始化變量
 7 radio = tkinter.Radiobutton(root,              #生成單選框組件
 8                             variable = r,      #設置單選框關聯的變量
 9                             value = '1',       #設置選中單選框時其所關聯的變量的值,即r的值
10                             indicatoron = 0,   #將單選框繪製成按鈕樣式
11                             text = 'Radio1')   #設置單選框顯示的文本
12 radio.pack()
13 radio = tkinter.Radiobutton(root,
14                             variable = r,
15                             value = '2',
16                             indicatoron = 0,
17                             text = 'Radio2')
18 radio.pack()
19 radio = tkinter.Radiobutton(root,
20                             variable = r,
21                             value = '3',
22                             indicatoron = 0,
23                             text = 'Radio3')
24 radio.pack()
25 radio = tkinter.Radiobutton(root,
26                             variable = r,
27                             value = '4',
28                             indicatoron = 0,
29                             text = 'Radio4')
30 radio.pack()
31 c = tkinter.IntVar()                              #使用InVar生成整型變量用於複選框
32 c.set(1)
33 check = tkinter.Checkbutton(root,
34                             text = 'Checkbutton', #設置複選框的文本
35                             variable = c,         #設置複選框關聯的變量
36                             indicatoron = 0,      #將單選框繪製成按鈕樣式,不加爲單選按鈕
37                             onvalue = 1,          #當選中複選框時,c的值爲1
38                             offvalue = 2)         #當未選中複選框時,c的值爲2
39 check.pack()
40 root.mainloop()
41 print(r.get())                                    #輸出r的值
42 print(c.get())                                    #輸出c的值

繪圖:

 1 #_*_ coding:utf-8 _*_
 2 import tkinter                                    #導入tkinter模塊
 3 
 4 root = tkinter.Tk()
 5 canvas = tkinter.Canvas(root,
 6                         width = 600,              #指定Canvas組件的寬度爲600
 7                         height = 480,             #指定Canvas組件的高度爲480
 8                         bg = 'white')             #指定Canvas組件背景色爲白色
 9 im = tkinter.PhotoImage(file = 'python.gif')      #使用PhotoImage打開圖片
10 canvas.create_image(300,50,image = im)            #使用create_image將圖片添加到Canvas組件中
11 canvas.create_text(302,77,                        #使用create_text方法繪製文字
12                    text = 'Use Canvas',           #所繪製文字的內容
13                    fill = 'gray')                 #所繪製文字的顏色爲灰色
14 canvas.create_text(300,75,
15                    text = 'Use Canvas',
16                    fill = 'blue')
17 canvas.create_polygon(290,114,316,114,330,130,    #使用create_polygon方法繪製六邊形
18                       310,146,284,146,270,130)
19 canvas.create_oval(280,120,320,140,               #使用create_oval方法繪製橢圓形
20                    fill = 'white')                #設置橢圓用白色填充
21 canvas.create_line(250,130,350,130)               #使用create_line繪製直線
22 canvas.create_line(300,100,300,160)
23 canvas.create_rectangle(90,190,510,410,           #使用create_rectangle繪製一個矩形
24                         width = 5)                #設置矩形線寬爲5像素
25 canvas.create_arc(100,200,500,400,                #使用create_arc繪製圓弧
26                   start = 0,extent = 240,         #設置圓弧的起止角度
27                   fill = 'pink')                  #設置圓弧填充顏色爲粉絲
28 canvas.create_arc(103,203,500,400,
29                   start = 241,extent = 118,
30                   fill = 'red')
31 canvas.pack()                                     #將canvas添加到主窗口
32 root.mainloop()

事件:
鼠標事件、鍵盤事件、窗口事件,綁定事件的組件:
bind(sequence,func,add)
bind_class(classname,sequence,func,add)
bind_all(sequence,func,add)
參數含義:
sequence:所綁定的事件,必須以「<>」包圍的字符串
func:所綁定的事件處理函數
add:可選參數,爲空字符或者「+」
classname:所綁定的類
備註:鼠標事件數字1表示鼠標左鍵、2表示鼠標中鍵、3表示鼠標右鍵

鍵盤事件:


備註:KeyPress能夠用KeyRelease替換,表示當按鍵釋放時觸發事件。須要注意的是,輸入的字母要區分大小寫

窗口事件:

相應事件:
事件綁定到函數後,觸發時系統將向該函數傳遞一個event對象的參數,event對象屬性:

 1 #_*_ coding:utf-8 _*_
 2 import tkinter
 3 
 4 class MyButton:                                                #定義按鈕類
 5     def __init__(self,root,canvas,label,type):                 #類初始化
 6         self.root = root                                       #保存引用值
 7         self.cancas = canvas
 8         self.label = label
 9         if type == 0:                                          #根據類型建立按鈕
10             button = tkinter.Button(root,text = 'DrawLine',
11                                     command = self.DrawLine)
12         elif type == 1:
13             button = tkinter.Button(root, text='DrawArc',
14                                     command=self.DrawArc)
15         elif type == 2:
16             button = tkinter.Button(root, text='DrawRec',
17                                     command=self.DrawRec)
18         else:
19             button = tkinter.Button(root, text='DrawOval',
20                                     command=self.DrawOval)
21         button.pack(side = 'left')
22     def DrawLine(self):                                       #DrawLine按鈕事件處理函數
23         self.label.text.set('Draw Line')
24         self.cancas.SetStatus(0)
25     def DrawArc(self):                                        #DrawArc按鈕事件處理函數
26         self.label.text.set('Draw Arc')
27         self.cancas.SetStatus(1)
28     def DrawRec(self):                                        #DrawRec按鈕事件處理函數
29         self.label.text.set('Draw Rectangle')
30         self.cancas.SetStatus(2)
31     def DrawOval(self):                                       #DrawOval按鈕事件處理函數
32         self.label.text.set('Draw Oval')
33         self.cancas.SetStatus(3)
34 class MyCanvas:                                               #定義MyCanvas類
35     def __init__(self,root):                                  #保存引用值
36         self.status = 0
37         self.draw = 0
38         self.root = root
39         self.canvas = tkinter.Canvas(root,bg = 'white',       #生成Canvas組件
40                                      width = 600,
41                                      height = 480)
42         self.canvas.pack()
43         self.canvas.bind('<ButtonRelease-1>',self.Draw)       #綁定事件到左鍵
44         self.canvas.bind('<Button-2>',self.Exit)              #綁定事件到中鍵
45         self.canvas.bind('<Button-3>',self.Del)               #綁定事件到右鍵
46         self.canvas.bind_all('<Delete>',self.Del)             #綁定事件到Delete鍵
47         self.canvas.bind_all('<KeyPress-d>',self.Del)         #綁定事件到d鍵
48         self.canvas.bind_all('<KeyPress-e>',self.Exit)        #綁定事件到e鍵
49     def Draw(self,event):                                     #繪製事件處理函數
50         if self.draw == 0:                                    #判斷是否繪圖
51             self.x = event.x
52             self.y = event.y
53             self.draw = 1
54         else:                                                 #根據self.status繪製不一樣的圖形
55             if self.status == 0:
56                 self.canvas.create_line(self.x,self.y,
57                                         event.x,event.y)
58                 self.draw = 0
59             elif self.status == 1:
60                 self.canvas.create_arc(self.x, self.y,
61                                         event.x, event.y)
62                 self.draw = 0
63             elif self.status == 2:
64                 self.canvas.create_rectangle(self.x, self.y,
65                                         event.x, event.y)
66                 self.draw = 0
67             else:
68                 self.canvas.create_oval(self.x, self.y,
69                                         event.x, event.y)
70                 self.draw = 0
71     def Del(self,event):                                     #按下右鍵或d鍵則刪除圖形
72         items = self.canvas.find_all()
73         for item in items:
74             self.canvas.delete(item)
75     def Exit(self,event):                                    #按下中鍵或e鍵則退出
76         self.root.quit()
77     def SetStatus(self,status):                              #設置繪製的圖形
78         self.status = status
79 class MyLabel:                                               #定義標籤類
80     def __init__(self,root,canvas):                          #類初始化
81         self.root = root                                     #保存引用值
82         self.canvas = canvas
83         self.text = tkinter.StringVar()                      #生成標籤引用變量
84         self.text.set('Draw Line')
85         self.label = tkinter.Label(root,textvariable = self.text,  #生成標籤
86                                    fg = 'red',width = 50)
87         self.label.pack(side = 'left')
88 root = tkinter.Tk()                                          #生成主窗口
89 canvas = MyCanvas(root)                                      #生成繪圖組件
90 label = MyLabel(root,canvas)                                 #生成標籤
91 MyButton(root,canvas,label,0)                                #生成按鈕
92 MyButton(root,canvas,label,1)
93 MyButton(root,canvas,label,2)
94 MyButton(root,canvas,label,3)
95 root.mainloop()                                              #進入信息循環

信息框:

 1 #_*_ coding:utf-8 _*_
 2 import tkinter
 3 import tkinter.messagebox
 4 def cmd():                             #按鈕信息處理
 5     global n                           #使用全局變量n
 6     global buttontext
 7     n = n + 1
 8     if n == 1:                         #判斷n的值,顯示不一樣的消息框
 9         tkinter.messagebox.askokcancel('Python tkinter','askokcancel')
10         buttontext.set('skquestion')   #更改按鈕上的文字
11     elif n == 2:
12         tkinter.messagebox.askquestion('Python tkinter','askquestion')
13         buttontext.set('askyesno')
14     elif n == 3:
15         tkinter.messagebox.askyesno('Python tkinter','askyesno')
16         buttontext.set('showerror')
17     elif n == 4:
18         tkinter.messagebox.showerror('Python tkinter','showerror')
19         buttontext.set('showinfo')
20     elif n == 5:
21         tkinter.messagebox.showinfo('Python tkinter','shoeinfo')
22         buttontext.set('showwarning')
23     else:
24         n = 0                        #將n賦值爲0從新開始循環
25         tkinter.messagebox.showwarning('Python tkinter','showwarning')
26         buttontext.set('askokcancel')
27 n = 0                                #爲n賦初始值
28 root = tkinter.Tk()
29 buttontext = tkinter.StringVar()     #生成關聯按鈕文字的變量
30 buttontext.set('askokcancel')        #設置buttontext值
31 button = tkinter.Button(root,        #生成按鈕
32         textvariable = buttontext,   #設置關聯變量
33                     command = cmd)   #設置事件處理函數
34 button.pack()
35 root.mainloop()                      #進入信息循環

除了5種信息框,還能夠使用tkinter.messagebox._show函數建立其餘類型的信息框
tkinter.messagebox._show函數的控制參數:
default:指定信息框的按鈕
icon:指定信息框的圖標
message:指定信息框所顯示的信息
parent:指定信息框的父組件
title:指定信息框的標題
type:指定信息框的類型

對話框:

tkinter.simpledialog模塊能夠建立標準的輸入對話框
tkinter.simpledialog模塊能夠建立3中類型的對話框:
輸入字符串、輸入整數和輸入浮點數的對話框,對應的函數爲askstring、askinteger、和askfloat函數,可選參數有:
title:指定對話框標題
prompt:指定對話框中顯示的文字
initiavalue:指定輸入框的初始值
使用tkinter.simpledialog模塊中的函數建立對話框後,將返回對話框中文本框的值

 1 #_*_ coding:utf-8 _*_
 2 import tkinter
 3 import tkinter.simpledialog
 4 def InStr():                                                      #按鈕事件處理函數
 5     r = tkinter.simpledialog.askstring('Python tkinter',          #建立字符串輸入對話框
 6                                        'Input String',            #指定提示字符
 7                                        initialvalue = 'tkinter')  #指定初始化文本
 8     print(r)                                                      #輸出返回值
 9 def InInt():
10     r = tkinter.simpledialog.askinteger('Python tkinter',
11                                        'Input Integer')
12     print(r)
13 def InFlo():
14     r = tkinter.simpledialog.askfloat('Python tkinter',
15                                        'Input Float')
16     print(r)
17 root = tkinter.Tk()                                               #生成主窗口
18 button1 = tkinter.Button(root,text = 'Input String',              #建立按鈕
19                          command = InStr)                         #指定按鈕事件處理函數
20 button1.pack(side = 'left')
21 button2 = tkinter.Button(root,text = 'Input Integer',
22                          command = InInt)
23 button2.pack(side = 'left')
24 button3 = tkinter.Button(root,text = 'Input Float',
25                          command = InFlo)
26 button3.pack(side = 'left')
27 root.mainloop()                                                   #進入信息循環

tkinter.filedialog模塊能夠建立文件打開與保存文件對話框
tkinter.filedialog模塊中的askopenfilename函數能夠建立打開文件對話框
tkinter.filedialog模塊中的asksaveasfilename函數能夠建立保存文件對話框,具備相同可先參數:
filetypes:指定文件類型
initialdir:指定默認目錄
initialfile:指定默認文件
title:指定對話框標題
使用tkFileDialog模塊中的函數建立對話框後,將返回文件的完整路徑

 1 #_*_ coding:utf-8 _*_
 2 import tkinter
 3 import tkinter.filedialog
 4 def FileOpen():                                                           #按鈕事件處理函數
 5     r = tkinter.filedialog.askopenfilename(title = 'Python tkinter',      #建立打開文件對話框
 6                 filetypes = [('Python','*.py *.pyw'),('All files','*')])  #指定文件類型爲Python程序
 7     print(r)                                                              #輸出返回值
 8 def FileSave():                                                           #按鈕事件處理函數
 9     r = tkinter.filedialog.asksaveasfilename(title = 'Python tkinter',    #建立保存文件對話框
10                                              initialdir = r'F:\python',   #指定初始化目錄
11                                              initialfile = 'test.py')     #指定初始化文件
12     print(r)
13 root = tkinter.Tk()
14 button1 = tkinter.Button(root,text = 'File Open',                         #建立按鈕
15                          command = FileOpen)                              #指定按鈕事件處理函數
16 button1.pack(side = 'left')
17 button2 = tkinter.Button(root,text = 'File Save',
18                          command = FileSave)
19 button2.pack(side = 'left')
20 root.mainloop()                                                           #進入信息循環

tkinter.colorchooser模塊能夠建立顏色選擇對話框
tkinter.colorchooser模塊中的askcolor函數能夠建立顏色選擇對話框,可選參數:
initialcolor:指定初始化顏色
title:指定對話框標題
使用tkinter.colorchooser模塊中的函數建立對話框後,將返回顏色的RGB值以及能夠在Python tkinter中使用的顏色字符值

 1 #_*_ coding:utf-8 _*_
 2 import tkinter
 3 import tkinter.colorchooser
 4 def ChooseColor():                                                    #按鈕事件處理函數
 5     r = tkinter.colorchooser.askcolor(title = 'Python tkinter')       #建立顏色選擇對話框
 6     print(r)                                                          #輸出返回值
 7 root = tkinter.Tk()                                                   #生成主窗口
 8 button = tkinter.Button(root,text = 'Choose Color',                   #建立按鈕
 9                         command = ChooseColor)                        #指定按鈕事件處理函數
10 button.pack()
11 root.mainloop()                                                       #進入信息循環


自定義對話框:
Toplevel組件:

 1 #_*_ coding:utf-8 _*_
 2 import tkinter
 3 import tkinter.messagebox
 4 class MyDialog:                                                    #定義對話框類
 5     def __init__(self,root):                                       #對話框初始化
 6         self.top = tkinter.Toplevel(root)                          #生成Toplevel組件
 7         label = tkinter.Label(self.top,text = 'Please Input')      #生成標籤組件
 8         label.pack()
 9         self.entry = tkinter.Entry(self.top)                       #生成文本框組件
10         self.entry.pack()
11         self.entry.focus()                                         #讓文本框得到焦點
12         button = tkinter.Button(self.top,text = 'Ok',              #生成按鈕
13                                 command = self.Ok)                 #設置按鈕事件處理函數
14         button.pack()
15     def Ok(self):                                                  #定義按鈕事件處理函數
16         self.input = self.entry.get()                              #獲取文本框中的內容,保存爲input
17         self.top .destroy()                                        #銷燬對話框
18     def get(self):                                                 #返回在文本框輸入的內容
19         return self.input
20 class MyButton():                                                  #定義按鈕類
21     def __init__(self,root,type):                                  #按鈕初始化
22         self.root = root                                           #保存父窗口引用
23         if type == 0:                                              #根據類型建立不一樣按鈕
24             self.button = tkinter.Button(root,
25                                          text = 'Create',
26                                          command = self.Create)    #設置Create按鈕事件處理函數
27         else:
28             self.button = tkinter.Button(root,
29                                          text = 'Quit',
30                                          command = self.Quit)      #設置Quit按鈕事件處理函數
31         self.button.pack()
32     def Create(self):                                              #Create按鈕的事件處理函數
33         d = MyDialog(self.root)                                    #生成對話框
34         self.button.wait_window(d.top)                             #等待對話框結束
35         tkinter.messagebox.showinfo('Python','You input:\n' + d.get())  #獲取對話框中輸入值,並輸出
36     def Quit(self):                                                #Quit按鈕的事件處理函數
37         self.root.quit()                                           #退出主窗口
38 root = tkinter.Tk()                                                #生成主窗口
39 MyButton(root,0)                                                   #生成Create
40 MyButton(root,1)                                                   #生成Quit按鈕
41 root.mainloop()                                                    #進入信息循環
相關文章
相關標籤/搜索