最近參加了一個數據庫比賽,在可視化的時候使用的Qt Designer,雖然Qt界面看起來有些許古老,但是功能還是挺強大的。
下載鏈接:
漢化鏈接:
首先,我們要創建一個登陸界面,先在Qt中點擊文件,然後點擊新建,在彈出的界面中,選擇Main Window,然後點擊創建。
得到這樣一個界面,在右邊可以設置這個對象的屬性,這裏我們將它的屬性名objectName改為login,寬度設置為530,高度設置為780,窗口標題windowTitle設置為登陸。
Qt裏一個很強大的功能就是樣式表,通過修改樣式表,我們可以得到自己想要的樣式。這裏我們想修改窗口的背景顏色,在窗體裏點擊右鍵,選擇改變樣式表,在出現的窗口中點擊添加顏色,(記得要點擊那個小三角,不然它之後給你選擇一個顏色,需要應用顏色的地方要在小三角里選擇),然後點擊background-color,在彈出界面中選擇白色,點擊ok。在樣式表裏就會出現相應改動的地方,點擊Apply可以觀察是否是自己想要的樣式,如果是,就可以點擊ok退出樣式表界面啦。
現在我們就需要添加登陸界面需要的一些組件了,Qt左邊一欄就是可以添加的組件了,可以選擇我們需要的組件,拖動到界面之中,我們這裏選擇兩個Label標籤組件,兩個Line Edit輸入組件,一個Push Button按鈕組件,可以雙擊組件修改組件的內容,然後通過樣式表修改他們的樣式。
首先我們編輯Label組件的樣式表,點擊添加字體,這裏我們選擇的是DengXian字體,點擊ok,點擊Apply觀察是不是我們想要的樣式,這裏我們需要大一點的字體,所以將font-size從9pt修改為12pt,點擊Apply,是我們想要的樣式,再點擊ok,就應用成功啦。我們再編輯下一個Label組件時就不用選擇了,直接複製之前的樣式表就行了。
修改樣式表,不僅可以通過選擇,還可以通過自己編寫樣式來達到目的,這裏我們修改button組件樣式表就是通過自己編寫代碼來實現
background-color: #fafafe;
font: 25 10pt "DengXian";
font-weight:bold;
border-radius:10px;
border:2px outset gray;
修改要樣式後,我們再通過各個組件的屬性和值來設置他們的位置和大小,點擊每個組件,右邊geometry裏的x,y代表組件左頂點在窗口中的座標,我們設置第一個Label的geometry為[(40,215),60,30],第二個Label的geometry[(40,270),60,30],button[(110,350),300,50],兩個Line Edit分別為[(110,215),300,30],[(110,270),300,30]。最後為了得到我們想要的樣式再進行一些微調。button:border-radius:20px;
Line Edit:
border-radius:3px;
border:1px solid gray;
font: 25 9pt "DengXian";
我們想在賬號和密碼的Line Edit框裏設置提示信息,可以使用右邊QLineEdit裏的placeholderText進行設置。可以使用Ctrl+R進行預覽。
這裏我們希望密碼以密文形式顯示,可以在屬性echoMode裏選擇Password。
另外,當我們右鍵點擊輸入框時,可以選擇改變工具提示,在彈出的界面中輸入:請輸入你的賬號,點擊確定。預覽時可以看到當鼠標放在賬號輸入框時,會出現請輸入你的賬號的提示。對密碼輸入框也可以進行同樣的設置。
終於完成了登陸界面的設計,現在我們需要到PyCharm中運行我們設計的界面了。首先要保存我們的.ui文件,Ctrl+S保存文件,這裏我們將它命名為login.ui,保存。然後我們需要到命令行中使用.ui文件生成.py文件。使用Win+R,在彈出界面中輸入cmd,進入命令行,然後查看我們保存的.ui文件的位置,複製其路徑。因為我保存的文件在G盤,所以先在命令行中輸入G:,回車進入G盤,然後cd 空格 加上剛才複製的地址,進入到保存login.ui文件的目錄。下面是生成python文件的代碼,將name替換成文件名,我們這裏替換為login。
pyuic5 -o name.py name.ui
此時嘗試運行剛剛生成的“HelloWorld.py”是沒用的,因為生成的文件並沒有程序入口。因此我們在同一個目錄下另外創建一個程序叫做“main.py”,並輸入如下內容。然後運行代碼,可以得到我們設計的GUI了。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import login
if __name__ == '__main__':
app = QApplication(sys.argv)
Login = QMainWindow()
ui = login.Ui_login()
ui.setupUi(Login)
Login.show()
sys.exit(app.exec_())
部分內容學習於