pyqt5
matplotlib
mysql
pandas
ui介面是用pyqt5實現的,可以通過qtdesigner拖動控制項實現,真的很直觀方便,調整好位置,更改樣式,後續再新增邏輯即可。這裡的qss樣式和css非常類似,不再多做介紹。
根目錄下主要有存放ui**(ui)和其他邏輯(lib)的資料夾,main檔案是主函式,控制ui介面的開啟。config.ini是基本配置檔案,裡面是填寫預設資料庫使用者名稱、密碼、資料庫、表名稱的,目前只支援mysql。xlsx檔案是打卡工具上的資料匯出的,剩下的png也都是打卡工具生成的圖表。ui分為:打卡工具主介面、成功提示介面、失敗提示介面,lib中只有生成圖表的**。
打卡工具如上圖所示:
左邊部分就是**控制項(qtablewidget),右邊部分是使用了垂直布局(verticallayoutwidget),然後依次是標籤(qlabel),行編輯(qlineedit),按鈕(qpushbutton)若干。
同步mysql:①開啟打卡工具會自動把資料庫裡的記錄同步過來;②點選按鈕也可以手動同步資料庫,這裡同步的依據是ui介面上的**資料,手動點選同步會把當前ui表覆蓋mysql表。
匯出excel:把當前**的資料匯出到excel檔案中。
建立圖表:生成加班等級柱形圖、加班等級佔比餅圖、各年各月每日加班情況折線圖、各年每月總加班時長柱狀圖。
打卡啦:記錄當前日期時間。
我這裡只能簡單介紹下,詳情請戳右邊。入門教程
基類需要改成qwidget,繼承基類的建構函式。
def __init__(self):
super(ui_form, self).__init__()
其他模組的匯入,控制項的樣式位置都可以根據需求調整,ui介面可以通過如下**開啟:
if __name__ == '__main__':
uiins = ui_form()
uiins.show()
#設定視窗標題
self.setwindowtitle("打卡工具")
設定視窗大小(固定,可調整)
self.setfixedsize(610, 521)
self.resize(670, 521)
#設定密碼隱藏
self.psw_edit.setechomode(qlineedit.password)
#設定按鈕提示語
self.mysql_button.settooltip("以當前**資料為準,會先清資料庫記錄,再匯入資料")
#設定垂直水平滾動條
self.tablewidget.setverticalscrollbarpolicy(qtcore.qt.scrollbarasneeded)
self.tablewidget.sethorizontalscrollbarpolicy(qtcore.qt.scrollbarasneeded)
#**不可編輯
self.tablewidget.setedittriggers(qabstractitemview.noedittriggers)
#垂直水平表頭顯示與否
self.tablewidget.horizontalheader().setvisible(true)
self.tablewidget.verticalheader().setvisible(false)
#設定**行列數
self.tablewidget.setrowcount(1)
self.tablewidget.setcolumncount(3)
#設定表頭名稱
self.tablewidget.sethorizontalheaderlabels(['日期', '星期', '打卡時間'])
#獲取某行某列的內容
self.tablewidget.item(r, 0).text()
# 設定視窗背景透明
self.setattribute(qtcore.qt.wa_translucentbackground)
self.getini()只是讀取下ini檔案,用re匹配出資料。
self.click_clockin()是點選『打卡啦』按鈕會呼叫的方法,需要關聯下控制項,關聯方式如下。這個方法嚴格按照時間順序新增記錄,不然就彈錯誤提示,還要判斷打卡時間是不是和最新記錄時間一致,再選擇要不要新增行還是修改行記錄。
self.click_mysql_button()和self.auto_sync_mysql()分別是手動自動同步資料庫,這個放在另一章節詳細討論。
self.click_excel_button()也是需要關聯控制項的,點選即可生成excel,還會有成功失敗彈框提示,這裡有用到列表解析式來生成**記錄,生成的記錄列表建立pd.dataframe(),再用to_excel()直接生成文件,簡單粗暴。
self.click_createchart_button()也放到第二章吧(才不是因為偷懶)
# 按鈕關聯
self.button.clicked.connect(self.click_clockin)
以上就是我打卡工具的簡單介紹,原始碼的話可以去我的github獲取,後續會打包乙個.exe的工具上傳到github。以下是我目前記錄到的資料:
IOS設計UI工具大全
如果你是一位設計師或開發人員 程式設計師,準備步入ios開發,那這裡收集了你需要的工具。本文並不涵蓋ios教程,只偏重線框圖工具和檢視資源。1.sketch pad 素描墊 1 iphone wireframe templates for sketching interactive logic 出的...
190427打卡 反轉部分單向鍊錶
題目描述 給定乙個單向鍊錶的頭結點head,以及兩個整數from和to,在單向鍊錶上把第from個節點到第to個節點這一部分進行反轉 例如 1 2 3 4 5 null,from 2,to 4 調整結果為 1 4 3 2 5 null 再如 1 2 3 null,from 1,to 3 調整結果為 ...
Centos部分工具命令
啟動 systemctl start httpd 停止 systemctl stop httpd 重啟 systemctl restart httpd 啟動 systemctl start mysqld 停止 systemctl stop mysqld 重啟 systemctl restart my...