PyQt5學習總結(一個簡單的數據庫查詢系統)

基於PyQt5的GUI開發流程:

  1. 將一個窗口控件拖入窗口中並放在預設的大致位置。

  2. 對於要用代碼引用的窗口控件,應指定一個名字:對於需要微調的窗口控件,可以設置其對應屬性。
  3. 重複步驟1和2,直到所需的所有窗口控件都放在窗口中。
  4. 根據自己預設的界面,爲便於佈局可以添加Vertical Spacer、Horizontal Spacer、Horizontal Line、Vertical Line控件隔開。
  5. 選擇需佈局的窗口控件,合理使用佈局管理器對窗口進行佈局。
  6. 設置好各窗口控件屬性及窗口布局方式。
  7. 佈局好所有窗口部件後在主窗口設置佈局方式,保證所有控件填滿窗口。
  8. 爲窗口設置buddy關係(該步爲可選步驟,設置buddy關係時,設置其中一個控件的快捷鍵,當觸發快捷鍵時光標可快速定位至其夥伴關係控件。主要應用在label與edit控件之間,便於快速切換編輯)
  9. 設置按鍵次序即Tab鍵次序(強迫症患者福音,爲便於編寫代碼,可觀察對象查看窗口並在利用相關工具(比如億圖的思維導圖、Visio)繪製出各控件之間的邏輯)
  10. 建立一些簡單的信號與槽連接
  11. Ctrl+R預覽窗口,檢查所有內容是否按預設工作
  12. 設置窗口對象名,保存
  13. 利用Pycharm或者Eric等工具或者在命令行輸入python -m PyQt5.uic.pyuic yourProgram.ui -o yourProgram.py編譯窗口。
  14. 進行正常的代碼編輯工作。

開發環境:

Windows7+Python3.6.1+Pycharm2017

PyQt編寫數據庫管理系統GUI過程中的問題及解決方法:

1、數據庫連接問題

在此使用mysql數據庫進行數據管理,期間使用第三方庫pymssql未成功,而mysq-python僅支持Python2.7以下版本,最後選用PyMySQL庫成功連接。代碼如下

host = "127.0.0.1"
user = "root"
passwd = "yourpassword"
db = 'yoursql'
conn = pymysql.connect(host=host, user=user, passwd=passwd, db=db, port=3306, charset='utf8')
cursor = conn.cursor()
cursor.execute('sql語句')
conn.commit()  # 提交當前事務
cursor.close()

2、comboBox控件使用

self.comboBox = QtWidgets.QComboBox()
#獲取當前控件內容
self.comboBox.currentText()

3、dateEdit控件使用

self.dateEdit= QtWidgets.QDateEdit()
 設置彈出日曆窗口
self.dateEdit.setCalendarPopup(True)
# 設置最小及最大日期
self.dateEdit.setMinimumDate(QtCore.QDate.currentDate().addYears(-40))
self.dateEdit.setMaximumDate(QtCore.QDate.currentDate())
# 設置默認顯示時間
self.dateEdit.setDate(QtCore.QDate.currentDate().addYears(-40))
#格式化輸出時間
self.dateEdit.date().toString("yyyy-MM-dd")

4、lineEdit控件使用

self.lineEdit = QtWidgets.QLineEdit()
#獲取文本編輯框內容
self.lineEdit.text()

5、tableWidget控件使用

self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
#設置表格的編輯規則        
self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.AllEditTriggers)

選項描述
QAbstractItemView.NoEditTriggers0不能對錶格內容進行修改
QAbstractItemView.CurrentChanged1任何時候都能對單元格進行修改
QAbstractItemView.DoubleClicked2雙擊單元格
QAbstractItemView.SlelectedClicked4單擊選中的內容
QAbstractItemView.EditKeyPressed8當修改鍵被按下時修改單元格
QAbstractItemView.AnyKeyPressed16按任意鍵修改單元格
QAbstractItemView.AllEditTriggers31包括以上可修改的所有條件
#取單元格內容時需首先判斷單元格是否爲空            
if self.tableWidget.item(i, j) == None:
    do something
else:
    self.tableWidget.item(i, j).text()

未完待續。。。




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