打卡工具(一) UI部分

2022-02-28 13:12:49 字數 3075 閱讀 1167

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...