tkinter 筆記

最近項目要用到tkinter,中間經過一些坑,寫下來避免大家踩雷。

先貼一下我做的GUI窗口示例:

   

完成的主要功能是,尋找機器中存在的問題並顯示,提供解決方案,如果提供的解決方案無法解決當前的問題,就要求外部輸入新的解決方案,同時會更新到數據庫中。

其中需要重點注意的是,如何從一個按鈕跳轉到下一個窗口,這裏用到的是''command=xx'';如果建立用戶輸入界面,用到的是"entry"; 如何和數據庫相連接,這裏需要用到python xlrd,我的數據庫是一個excel。

1. tkinter是什麼:

Tkinter 是 Python 的標準 GUI 庫。Python 使用 Tkinter 可以快速的創建 GUI 應用程序。

2. 創建最基本的GUI程序

import tkinter as tk
myWindow = tk.Tk()  # 根窗口的實例
myWindow.title('Tester Troubleshooter') 
myWindow.mainloop()  # 窗口的主事件循環,必須的

3. 讓窗口居中

width = 380
height = 200
screenwidth = myWindow.winfo_screenwidth()
screenheight = myWindow.winfo_screenheight()
alignstr = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)
myWindow.geometry(alignstr)

4. 窗口添加文字

label = tk.Label(myWindow, text="Solution provided:", font=('Arial', 12), width=20, height=2).grid(row=5, column=3)

5. 窗口添加按鈕

普通按鈕:

Button(myWindow, text='EXIT', command=close_window).grid(row=8, column=1)

like this:

選擇按鈕:

checkbutton1 = Checkbutton(myWindow, text='YES', onvalue='YES', variable=v, command=close_yes)

like this:

選擇按鈕需要注意的點,我的程序會默認全部選中,所以要加

checkbutton1.deselect() #初始狀態全不選
checkbutton1.grid(row=7, column=5)#確定按鈕的位置

6. 怎麼自動關閉窗口(如果沒有寫這個函數就需要點“X”才能關閉)

def close_finish():
    myWindow.destroy()

Button(myWindow, text='EXIT', command=close_finish).pack()

寫一個關閉窗口的函數,然後在button語句中加上command指向這個關閉窗口的函數。

7. 怎麼通過點擊按鈕指向另一個函數

command 很好用

checkbutton1 = Checkbutton(myWindow, text='YES', onvalue='YES', variable=v, command=close_yes)

8. 一個困擾了我很久的問題,爲什麼get()不到entry的內容。

雖然糾結到最後也不知道什麼原因,但是在各種嘗試下解決了。

就是把get()寫成一個函數。

起初直接在後面加上get()是拿不到輸入的內容的。

def close_window():
    global txt
    txt = entry1.get()
    myWindow.destroy()
    finish()
Label(myWindow, text="Please provide new solution:", font=('Arial', 10), width=20, height=2, padx=30, pady=30).grid(row=1, column=0)
entry1 = Entry(myWindow)
entry1.grid(row=1, column=1)
Button(myWindow, text='EXIT', command=close_window).grid(row=8, column=1)

9. 一個看起來和tk無關但是我也要加上的內容。

關於update excel

workbook = xlrd.open_workbook("C:\Tester\Error_List.xls")
oldws = workbook.sheet_by_index(0)
workbook1 = copy(workbook)
ws = workbook1.get_sheet(0)
ws.write(index_insert, 4, 1)
workbook1.save("C:\Tester\Error_List.xls")

使用擴展名xlsx運行之後打不開excel,後來查了知道需要改成xls

細節很重要啊...

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章