操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    前言

    Qt 是PyQt程序UI界面的實(shí)現(xiàn)工具,Qt 工具使用簡(jiǎn)單,可以通過拖拽和點(diǎn)擊完成復(fù)雜界面設(shè)計(jì),并且設(shè)計(jì)完成的.ui程序可以轉(zhuǎn)換成.py文件供程序調(diào)用。本文主要通過用戶登錄需求描述Qt 工具開發(fā)界面的使用方法。

    開發(fā)工具版本

    .7.4 + PyQt 5.11.2

    Qt 工具主界面

    打開路徑:${安裝目錄}/Lib/site-//.exe。主界面如下:

    主界面不同區(qū)域介紹:

    工具箱 區(qū)域:提供Gui界面開發(fā)各種基本控件,如單選框、文本框等??梢酝蟿?dòng)到新創(chuàng)建的主程序界面。

    主界面區(qū)域:用戶放置各種從工具箱拖過來(lái)的各種控件。模板選項(xiàng)中最常用的就是(通用窗口)和(主窗口)。二者區(qū)別主要是窗口不包含菜單欄、工具欄等??梢苑謩e創(chuàng)建對(duì)比看看。

    對(duì)象查看器 區(qū)域:查看主窗口放置的對(duì)象列表。

    屬性編輯器 區(qū)域: 提供對(duì)窗口、控件、布局的屬性編輯功能。比如修改控件的顯示文本、對(duì)象名、大小等。

    信號(hào)/槽編輯器 區(qū)域:編輯控件的信號(hào)和槽函數(shù),也可以添加自定義的信號(hào)和槽函數(shù)。

    Qt 基本控件介紹

    Box控件工具箱是按照控件作用類別進(jìn)行劃分的。這里作為實(shí)現(xiàn)入門級(jí)界面實(shí)現(xiàn),主要介紹最常使用的控件及控件對(duì)象相關(guān)函數(shù)。函數(shù)方法知道怎么獲取控件輸入內(nèi)容以及如何將后臺(tái)操作結(jié)果輸出到界面控件顯示的主要函數(shù)就可以了。

    (1)顯示控件。

    Lable:文本標(biāo)簽,顯示文本,可以用來(lái)標(biāo)記控件。

    Text :顯示文本控件。用于后臺(tái)命令執(zhí)行結(jié)果顯示。

    (2)輸入控件,提供與用戶輸入交互

    Line Edit:?jiǎn)涡形谋究?strong>qt點(diǎn)擊按鈕后怎么判斷是哪個(gè)按鈕,輸入單行字符串??丶?duì)象常用函數(shù)為Text() 返回文本框內(nèi)容,用于獲取輸入。() 用于設(shè)置文本框顯示。

    Text Edit:多行文本框,輸入多行字符串??丶?對(duì)象常用函數(shù)同Line Edit控件。

    Combo Box:下拉框列表。用于輸入指定枚舉值。

    (3)控件按鈕,供用戶選擇與執(zhí)行

    Push :命令按鈕。常見的確認(rèn)、取消、關(guān)閉等按鈕就是這個(gè)控件。信號(hào)一定要記住。信號(hào)就是指鼠標(biāo)左鍵按下然后釋放時(shí)會(huì)發(fā)送信號(hào),從而觸發(fā)相應(yīng)操作。

    Radio :?jiǎn)芜x框按鈕。

    Check Box:多選框按鈕。

    Qt 工具實(shí)現(xiàn)

    了解基本控件及作用和獲取輸入/顯示方法后,就可以開始動(dòng)手實(shí)現(xiàn)小需求了。。比如登錄界面。獲取用戶名和密碼并顯示。。

    打開Qt ,開始拖拽控件實(shí)現(xiàn)吧。。

    Step1:打開主界面,選擇模板

    Step2:從 Box工具箱中拖拽2個(gè)label、2個(gè)line Edit、2個(gè)Push 以及1個(gè)Text 。拖完后如下:

    Step3:雙擊各個(gè)控件,修改控件名稱(對(duì)應(yīng)屬性編輯區(qū)中的text,可直接雙擊控件修改)以及對(duì)象名稱(對(duì)應(yīng)屬性編輯區(qū)中的)。對(duì)象名稱一定記得修改。默認(rèn)生成的、這種名稱無(wú)法直接判斷到底是對(duì)應(yīng)哪個(gè)控件。。

    點(diǎn)擊菜單欄Form - 。預(yù)覽界面實(shí)現(xiàn)效果

    login.ui的程序代碼如下:

    
    <ui version="4.0">
     <class>Formclass>
     <widget class="QWidget" name="Form">
     <property name="geometry">
     <rect>
     <x>0x>
     <y>0y>
     <width>549width>
     <height>199height>
     rect>
     property>
     <property name="windowTitle">
     <string>用戶登錄string>
     property>
     <widget class="QLabel" name="user_label">
     <property name="geometry">
     <rect>
     <x>50x>
     <y>40y>
     <width>61width>
     <height>21height>
     rect>
     property>
     <property name="text">
     <string>用戶名string>
     property>
     widget>
     <widget class="QLineEdit" name="user_lineEdit">
     <property name="geometry">
     <rect>
     <x>130x>
     <y>40y>
     <width>113width>
     <height>20height>
     rect>
     property>
     widget>
     <widget class="QLabel" name="pwd_label">
     <property name="geometry">
     <rect>
     <x>50x>
     <y>80y>
     <width>54width>
     <height>12height>
     rect>
     property>
     <property name="text">
     <string>密碼string>
     property>
     widget>
     <widget class="QLineEdit" name="pwd_lineEdit">
     <property name="geometry">
     <rect>
     <x>130x>
     <y>70y>
     <width>113width>
     <height>20height>
     rect>
     property>
     widget>
     <widget class="QPushButton" name="login_Button">
     <property name="geometry">
     <rect>
     <x>50x>
     <y>110y>
     <width>75width>
     <height>23height>
     rect>
     property>
     <property name="text">
     <string>登錄string>
     property>
     widget>
     <widget class="QPushButton" name="cancel_Button">
     <property name="geometry">
     <rect>
     <x>160x>
     <y>110y>
     <width>75width>
     <height>23height>
     rect>
     property>
     <property name="text">
     <string>退出string>
     property>
     widget>
     <widget class="QTextBrowser" name="user_textBrowser">
     <property name="geometry">
     <rect>
     <x>270x>
     <y>30y>
     <width>221width>
     <height>101height>
     rect>
     property>
     widget>
     widget>
     <resources/>
     <connections/>
    ui>

    Step4:點(diǎn)擊File -Save保存實(shí)現(xiàn)結(jié)果。保存文件名為login.ui。

    Step5:界面開發(fā)完成。

    將.ui文件轉(zhuǎn)換為.py文件

    使用命令行 -o login.py login.ui轉(zhuǎn)換成.py文件。調(diào)用格式為 -o {輸出文件名} {輸入設(shè)計(jì)好的.ui后綴界面文件}。執(zhí)行結(jié)果如下

    轉(zhuǎn)換后的.py文件內(nèi)容如下:

    # -*- coding: utf-8 -*-
    # Form implementation generated from reading ui file 'login.ui'
    #
    # Created by: PyQt5 UI code generator 5.11.3
    #
    # WARNING! All changes made in this file will be lost!
    from PyQt5 import QtCore, QtGui, QtWidgets
    class Ui_Form(object):
     def setupUi(self, Form):
     Form.setObjectName("Form")
     Form.resize(549, 199)
     self.user_label = QtWidgets.QLabel(Form)
     self.user_label.setGeometry(QtCore.QRect(50, 40, 61, 21))
     self.user_label.setObjectName("user_label")
     self.user_lineEdit = QtWidgets.QLineEdit(Form)
     self.user_lineEdit.setGeometry(QtCore.QRect(130, 40, 113, 20))
     self.user_lineEdit.setObjectName("user_lineEdit")
     self.pwd_label = QtWidgets.QLabel(Form)
     self.pwd_label.setGeometry(QtCore.QRect(50, 80, 54, 12))
     self.pwd_label.setObjectName("pwd_label")
     self.pwd_lineEdit = QtWidgets.QLineEdit(Form)
     self.pwd_lineEdit.setGeometry(QtCore.QRect(130, 70, 113, 20))
     self.pwd_lineEdit.setObjectName("pwd_lineEdit")
     self.login_Button = QtWidgets.QPushButton(Form)
     self.login_Button.setGeometry(QtCore.QRect(50, 110, 75, 23))
     self.login_Button.setObjectName("login_Button")
     self.cancel_Button = QtWidgets.QPushButton(Form)
     self.cancel_Button.setGeometry(QtCore.QRect(160, 110, 75, 23))
     self.cancel_Button.setObjectName("cancel_Button")
     self.user_textBrowser = QtWidgets.QTextBrowser(Form)
     self.user_textBrowser.setGeometry(QtCore.QRect(270, 30, 221, 101))
     self.user_textBrowser.setObjectName("user_textBrowser")
     self.retranslateUi(Form)
     QtCore.QMetaObject.connectSlotsByName(Form)
     def retranslateUi(self, Form):
     _translate = QtCore.QCoreApplication.translate
     Form.setWindowTitle(_translate("Form", "用戶登錄"))
     self.user_label.setText(_translate("Form", "用戶名"))
     self.pwd_label.setText(_translate("Form", "密碼"))
     self.login_Button.setText(_translate("Form", "登錄"))
     self.cancel_Button.setText(_translate("Form", "退出"))

    界面與業(yè)務(wù)邏輯分離實(shí)現(xiàn)

    這一步主要實(shí)現(xiàn)業(yè)務(wù)邏輯,也就是點(diǎn)擊登錄和退出按鈕后程序要執(zhí)行的操作。為了后續(xù)維護(hù)方便,采用界面與業(yè)務(wù)邏輯相分離來(lái)實(shí)現(xiàn)。也就是通過創(chuàng)建主程序調(diào)用界面文件方式實(shí)現(xiàn)。這有2個(gè)好處。第1就是實(shí)現(xiàn)邏輯清晰。第2就是后續(xù)如果界面或者邏輯需要變更,好維護(hù)。新建.py文件程序,調(diào)用login.py文件。

    # -*- coding: utf-8 -*-
    # Form implementation generated from reading ui file 'connect_me.ui'
    #
    # Created by: PyQt5 UI code generator 5.11.3
    #
    # WARNING! All changes made in this file will be lost!
    #導(dǎo)入程序運(yùn)行必須模塊
    import sys
    #PyQt5中使用的基本控件都在PyQt5.QtWidgets模塊中
    from PyQt5.QtWidgets import QApplication, QMainWindow
    #導(dǎo)入designer工具生成的login模塊
    from login import Ui_Form
    class MyMainForm(QMainWindow, Ui_Form):
     def __init__(self, parent=None):
     super(MyMainForm, self).__init__(parent)
     self.setupUi(self)
    if __name__ == "__main__":
     #固定的,PyQt5程序都需要QApplication對(duì)象。sys.argv是命令行參數(shù)列表,確保程序可以雙擊運(yùn)行
     app = QApplication(sys.argv)
     #初始化
     myWin = MyMainForm()
     #將窗口控件顯示在屏幕上
     myWin.show()
     #程序運(yùn)行,sys.exit方法確保程序完整退出。
     sys.exit(app.exec_())

    運(yùn)行.py程序,結(jié)果如下:

    到這里,界面實(shí)現(xiàn)和業(yè)務(wù)主程序已經(jīng)寫好了。但是現(xiàn)在具體業(yè)務(wù)功能邏輯還未實(shí)現(xiàn)。需要對(duì)登錄和退出的按鈕點(diǎn)擊執(zhí)行相對(duì)應(yīng)的操作。

    添加信號(hào)和槽,實(shí)現(xiàn)業(yè)務(wù)邏輯

    實(shí)現(xiàn)部分見代碼注釋。這里主要添加如下兩行命令配置信號(hào)和槽的關(guān)系。信號(hào)和槽的創(chuàng)建和原理下文描述。這里可以參照添加即可。

    登錄按鈕:self...(self.)

    退出按鈕:self...(self.close)

    詳細(xì)代碼如下:

    # -*- coding: utf-8 -*-
    # Form implementation generated from reading ui file 'connect_me.ui'
    #
    # Created by: PyQt5 UI code generator 5.11.3
    #
    # WARNING! All changes made in this file will be lost!
    #導(dǎo)入程序運(yùn)行必須模塊
    import sys
    #PyQt5中使用的基本控件都在PyQt5.QtWidgets模塊中
    from PyQt5.QtWidgets import QApplication, QMainWindow
    #導(dǎo)入designer工具生成的login模塊
    from login import Ui_Form
    class MyMainForm(QMainWindow, Ui_Form):
     def __init__(self, parent=None):
     super(MyMainForm, self).__init__(parent)
     self.setupUi(self)
     #添加登錄按鈕信號(hào)和槽。注意display函數(shù)不加小括號(hào)()
     self.login_Button.clicked.connect(self.display)
     #添加退出按鈕信號(hào)和槽。調(diào)用close函數(shù)
     self.cancel_Button.clicked.connect(self.close)
     def display(self):
     #利用line Edit控件對(duì)象text()函數(shù)獲取界面輸入
     username = self.user_lineEdit.text()
     password = self.pwd_lineEdit.text()
     #利用text Browser控件對(duì)象setText()函數(shù)設(shè)置界面顯示
     self.user_textBrowser.setText("登錄成功!\n" + "用戶名是: "+ username+ ",密碼是: "+ password)
    if __name__ == "__main__":
     #固定的,PyQt5程序都需要QApplication對(duì)象。sys.argv是命令行參數(shù)列表,確保程序可以雙擊運(yùn)行
     app = QApplication(sys.argv)
     #初始化
     myWin = MyMainForm()
     #將窗口控件顯示在屏幕上
     myWin.show()
     #程序運(yùn)行,sys.exit方法確保程序完整退出。
     sys.exit(app.exec_())

    運(yùn)行結(jié)果如下:

    用戶登錄小程序開發(fā)完成。但是這個(gè)界面還有一個(gè)小問題,就是拖動(dòng)的時(shí)候,界面會(huì)變形。??磮D

    是不是覺得不可忍受。。有兩個(gè)辦法,一種是界面點(diǎn)擊使用網(wǎng)格布局,一種是使界面大小不可改變。這里介紹第二種方法。在Qt 上修改主界面最大屬性中的長(zhǎng)寬設(shè)置成與最小屬性一致。如下:

    這樣設(shè)置之后,就不允許在窗口左右兩邊拖動(dòng)導(dǎo)致界面改變大小,就可以保證主界面中的控件不會(huì)變形。

    打包成.exe文件

    用戶登錄顯示程序界面和邏輯都實(shí)現(xiàn)了。下來(lái)就是要推廣使用了。不是所有人電腦上都安裝有軟件或者對(duì)應(yīng)的版本以及PyQt5工具。那么如何讓程序在這些未安裝軟件的機(jī)子上運(yùn)行呢?可以使用工具將程序打包成.exe文件。使用方法可以參考《使用轉(zhuǎn)換.py文件為.exe可執(zhí)行程序》。打包過程如下:

    .exe -F .py -w

    打包成功后.exe在當(dāng)前目錄的dist目錄下。執(zhí)行.exe,程序可以正確運(yùn)行。如下:

    這樣,其他人想運(yùn)行你的程序qt點(diǎn)擊按鈕后怎么判斷是哪個(gè)按鈕,就可以直接給他提供.exe可執(zhí)行過程序了。

    小結(jié)

    本文主要講述了使用Qt 工具實(shí)現(xiàn)一個(gè)用戶登錄顯示的小需求。通過這個(gè)需求可以知道如何使用Qt 實(shí)現(xiàn)界面開發(fā)、.ui文件轉(zhuǎn)換、業(yè)務(wù)和界面分離實(shí)現(xiàn)以及最簡(jiǎn)單的信號(hào)和槽創(chuàng)建。通過這個(gè)需求實(shí)現(xiàn)過程描述相信你可以參考動(dòng)手實(shí)現(xiàn)你的小需求。起碼可以上手實(shí)踐了。。

    實(shí)際上這個(gè)程序還有很多小問題。。因?yàn)橛脩舻卿浗缑婵丶?,所以沒有感覺出來(lái)。。就是控件布局管理。就是如何讓界面上的控件整齊有序、布局合理美觀。

    以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

    原文鏈接:

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有