欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyQT5速成教程之Qt Designer介紹與入門

 更新時(shí)間:2020年11月02日 11:10:16   作者:養(yǎng)薛定諤的貓  
這篇文章主要介紹了PyQT5速成教程之Qt Designer介紹與入門,本文以PyCharm為例通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Qt Designer的介紹

在PyQt中編寫UI界面可以直接通過代碼來實(shí)現(xiàn),也可以通過Qt Designer來完成。Qt Designer的設(shè)計(jì)符合MVC的架構(gòu),其實(shí)現(xiàn)了視圖和邏輯的分離,從而實(shí)現(xiàn)了開發(fā)的便捷。Qt Designer中的操作方式十分靈活,其通過拖拽的方式放置控件可以隨時(shí)查看控件效果。Qt Designer生成的.ui文件(實(shí)質(zhì)上是XML格式的文件)也可以通過pyuic5工具轉(zhuǎn)換成.py文件。
Qt Designer隨PyQt5-tools包一起安裝,其安裝路徑在 “Python安裝路徑\Lib\site-packages\pyqt5-tools”下。
若要啟動(dòng)Qt Designer可以直接到上述目錄下,雙擊designer.exe打開Qt Designer;或?qū)⑸鲜雎窂郊尤氕h(huán)境變量,在命令行輸入designer打開;或在PyCharm中將其配置為外部工具打開。
下面以PyCharm為例,講述PyCharm中Qt Designer的配置方法。

PyCharm中PyQt5工具配置

打開PyCharm,選擇Settings -> Tools -> External Tools,點(diǎn)擊左上角的綠色加號(hào)。

 

Name填入QtDesigner(方便后續(xù)使用,名稱無所謂)。Program選擇我們安裝的PyQt5-tools下面的designer.exe。Working directory則選擇我們的工作目錄。然后點(diǎn)擊OK,則添加了QtDesigner作為PyCharm的外置工具。
然后添加PyUIC(UI轉(zhuǎn)換工具),PyUIC的Program為Python.exe,在Python的安裝目錄下面的Scripts目錄下,Working directory同理設(shè)為我們的工作目錄,Arguments則填入如下代碼:

-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py

最后添加pyrcc用于PyQt5的資源文件轉(zhuǎn)碼。具體配置與上述內(nèi)容相同,Arguments填入:

$FileName$ -o $FileNameWithoutExtension$_rc.py

退出之前,點(diǎn)擊Apply保存配置。配置完成之后,PyCharm中會(huì)加入3個(gè)工具。

 

點(diǎn)擊QtDesigner則打開QtDesigner的界面。

Qt Designer界面簡介

剛打開Qt Designer,則彈出如下圖所示的窗口。

 

創(chuàng)建新的Form給出了5個(gè)模板,其中Widget與Main Window最為常用。這里我們選擇創(chuàng)建一個(gè)Main Window。

 

上面界面的最左側(cè)菜單為Widget Box,Widget Box中包含PyQt5中的所有Widget組件,我們可以從左側(cè)的Widget Box中拖拽出諸如Button、View和Input等組件到中間的窗口中。
點(diǎn)擊Form -> Preview(快捷鍵為Ctrl+R)則可以預(yù)覽我們設(shè)計(jì)好的界面,也可以用Preview In來選擇在相應(yīng)的主題風(fēng)格下預(yù)覽。
我們拖拽一個(gè)Label與Button進(jìn)入主窗口(Main Window)。

 

此時(shí)在右上角的Object Inspector(對(duì)象查看器)中可以看到主窗口中的已放置的對(duì)象(label與pushButton)以及其相應(yīng)地Qt類。

 

以Label為例,此時(shí)我們點(diǎn)擊Main Window中的label或是在Object Inspector中選取label后,查看右側(cè)的一塊區(qū)域——Property Editor(屬性編輯器)。

 

其主要包含屬性有如下:

名稱 含義
objectName 控件對(duì)象名稱
geometry 相應(yīng)寬和高與坐標(biāo)
sizePolicy 控件大小的策略
minimumSize 最小的寬和高
maximumSize 最大的寬和高
font 字體
cursor 光標(biāo)

PS:將minimumSize和maximumSize設(shè)為一樣的數(shù)值之后,則窗口的大小固定。

最右下角的部分則為Resource Browser(資源瀏覽器),資源瀏覽器中可以添加相應(yīng)地如圖片素材,作為Label或Button等控件的背景圖片等。

Qt Designer的UI文件

使用Qt Designer設(shè)計(jì)保存的文件為.ui格式的文件。
通過保存并使用記事本等軟件打開,我們可以看到.ui文件的內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
 <property name="geometry">
 <rect>
 <x>0</x>
 <y>0</y>
 <width>800</width>
 <height>600</height>
 </rect>
 </property>
 <property name="windowTitle">
 <string>MainWindow</string>
 </property>
 <widget class="QWidget" name="centralwidget">
 <widget class="QLabel" name="label">
 <property name="geometry">
  <rect>
  <x>240</x>
  <y>80</y>
  <width>72</width>
  <height>15</height>
  </rect>
 </property>
 <property name="text">
  <string>TextLabel</string>
 </property>
 </widget>
 <widget class="QPushButton" name="pushButton">
 <property name="geometry">
  <rect>
  <x>240</x>
  <y>120</y>
  <width>93</width>
  <height>28</height>
  </rect>
 </property>
 <property name="text">
  <string>PushButton</string>
 </property>
 </widget>
 </widget>
 <widget class="QMenuBar" name="menubar">
 <property name="geometry">
 <rect>
  <x>0</x>
  <y>0</y>
  <width>800</width>
  <height>26</height>
 </rect>
 </property>
 </widget>
 <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

從.ui文件的第一行我們便能看出,其實(shí)質(zhì)是一個(gè)XML文件。ui文件中存放了在主窗口中的一切控件的相關(guān)屬性。使用XML文件來存儲(chǔ)UI文件,具有高可讀性和移植性,因此我們可以方便地將.ui文件轉(zhuǎn)換到.py文件,從而使得我們可以使用Python語言在設(shè)計(jì)的GUI上面編程。

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

將.ui文件轉(zhuǎn)換到.py文件很簡單,在前面我們曾設(shè)置了pyuic5這個(gè)工具。如果你沒有在PyCharm中設(shè)置這個(gè)工具,或者根本沒有使用PyCharm,則可以到命令行中使用如下命令實(shí)現(xiàn).ui到.py的轉(zhuǎn)換。

pyuic5 - o 目標(biāo)文件名.py 源文件名.ui

或者直接在PyCharm中,找到.ui文件,右鍵 打開菜單找到External Tools->PyUIC。點(diǎn)擊之后,我們在相應(yīng)工程目錄下會(huì)產(chǎn)生一個(gè).py文件。(注意,.ui文件必須存放在我們的External Tools中設(shè)置的相應(yīng)項(xiàng)目目錄下)

 

轉(zhuǎn)換完成之后,打開.py文件。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainWindow.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
 def setupUi(self, MainWindow):
  MainWindow.setObjectName("MainWindow")
  MainWindow.resize(800, 600)
  self.centralwidget = QtWidgets.QWidget(MainWindow)
  self.centralwidget.setObjectName("centralwidget")
  self.label = QtWidgets.QLabel(self.centralwidget)
  self.label.setGeometry(QtCore.QRect(240, 80, 72, 15))
  self.label.setObjectName("label")
  self.pushButton = QtWidgets.QPushButton(self.centralwidget)
  self.pushButton.setGeometry(QtCore.QRect(240, 120, 93, 28))
  self.pushButton.setObjectName("pushButton")
  MainWindow.setCentralWidget(self.centralwidget)
  self.menubar = QtWidgets.QMenuBar(MainWindow)
  self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
  self.menubar.setObjectName("menubar")
  MainWindow.setMenuBar(self.menubar)
  self.statusbar = QtWidgets.QStatusBar(MainWindow)
  self.statusbar.setObjectName("statusbar")
  MainWindow.setStatusBar(self.statusbar)

  self.retranslateUi(MainWindow)
  QtCore.QMetaObject.connectSlotsByName(MainWindow)

 def retranslateUi(self, MainWindow):
  _translate = QtCore.QCoreApplication.translate
  MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
  self.label.setText(_translate("MainWindow", "TextLabel"))
  self.pushButton.setText(_translate("MainWindow", "PushButton"))

觀察上述文件,可以看到如果不通過Qt Designer來制作界面的話,我們將會(huì)一次次地調(diào)試程序,來講按鈕和Label等放在合適的位置,這將是極其痛苦的過程。而通過Qt Designer,我們可以快速地制作UI,并生成Python的代碼,從而實(shí)現(xiàn)快速地UI的開發(fā)。

使用轉(zhuǎn)換的.py文件

然而,此時(shí)之間運(yùn)行這個(gè)轉(zhuǎn)換好的Python文件是無法顯示任何窗口的。因?yàn)檫@個(gè)Python文件只有定義主窗口以及其控件的代碼,并沒有程序入口的代碼。為了秉持視圖與邏輯分離的原則,我們再編寫一個(gè)新的腳本來調(diào)用這個(gè)文件,并且創(chuàng)建一個(gè)窗口。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from mainWindow import *


class MyWindow(QMainWindow, Ui_MainWindow):
 def __init__(self, parent=None):
  super(MyWindow, self).__init__(parent)
  self.setupUi(self)

if __name__ == '__main__':
 app = QApplication(sys.argv)
 myWin = MyWindow()
 myWin.show()
 sys.exit(app.exec_())

通過上述代碼,我們繼承了Ui_MainWindow類,使用其構(gòu)造方法構(gòu)造主窗口,并定義了程序的入口,通過創(chuàng)建QApplication對(duì)象來創(chuàng)建Qt窗口。其運(yùn)行結(jié)果如下:

通過上述操作,我們熟悉了Qt Designer設(shè)計(jì)界面,到實(shí)現(xiàn)業(yè)務(wù)邏輯的大致工作流程。通過這個(gè)工作流程可以簡化工作,實(shí)現(xiàn)速度的提升。
通過對(duì)視圖與業(yè)務(wù)邏輯的分離,在每次更改Qt Designer的UI設(shè)計(jì)的時(shí)候,也不用重新編寫代碼,而只需對(duì)更改的部分做稍微的修改即可。

在下一講中,我們將繼續(xù)講解Qt Designer的使用。

到此這篇關(guān)于PyQT5速成教程之Qt Designer介紹與入門的文章就介紹到這了,更多相關(guān)Qt Designer介紹與入門內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python translator使用實(shí)例

    Python translator使用實(shí)例

    translator實(shí)例應(yīng)用代碼
    2008-09-09
  • 詳解python時(shí)間模塊中的datetime模塊

    詳解python時(shí)間模塊中的datetime模塊

    這篇文章主要為大家介紹了python時(shí)間模塊中的datetime模塊,datetime模塊的接口則更直觀、更容易調(diào)用,想要了解datetime模塊的朋友可以參考一下
    2016-01-01
  • 簡單了解python中的與或非運(yùn)算

    簡單了解python中的與或非運(yùn)算

    這篇文章主要介紹了簡單了解python中的與或非運(yùn)算,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • tornado捕獲和處理404錯(cuò)誤的方法

    tornado捕獲和處理404錯(cuò)誤的方法

    這篇文章主要介紹了tornado捕獲和處理404錯(cuò)誤的方法,方法很簡單,只要覆寫write_error方法就可以,看下面的代碼就明白了
    2014-02-02
  • python刪除本地夾里重復(fù)文件的方法

    python刪除本地夾里重復(fù)文件的方法

    這篇文章主要為大家詳細(xì)介紹了python刪除本地夾里重復(fù)文件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Django數(shù)據(jù)庫表反向生成實(shí)例解析

    Django數(shù)據(jù)庫表反向生成實(shí)例解析

    這篇文章主要介紹了Django數(shù)據(jù)庫表反向生成實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Python計(jì)算時(shí)間間隔(精確到微妙)的代碼實(shí)例

    Python計(jì)算時(shí)間間隔(精確到微妙)的代碼實(shí)例

    今天小編就為大家分享一篇關(guān)于Python計(jì)算時(shí)間間隔(精確到微妙)的代碼實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • python全局變量與局部變量的區(qū)別及使用

    python全局變量與局部變量的區(qū)別及使用

    在python中定義和使用函數(shù)方法的時(shí)候,會(huì)遇到局部變量和全局變量,本文就來介紹一下python全局變量與局部變量的區(qū)別及使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Python實(shí)現(xiàn)操作Redis所有類型的方法詳解

    Python實(shí)現(xiàn)操作Redis所有類型的方法詳解

    Redis作為一款高性能的NoSQL數(shù)據(jù)庫,越來越受到了廣大開發(fā)者的喜愛。本篇博客將介紹如何使用Python操作Redis的所有類型,以及一些高級(jí)用法,感興趣的可以了解一下
    2023-04-04
  • python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作

    python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作

    這篇文章主要介紹了python 刪除excel表格重復(fù)行,數(shù)據(jù)預(yù)處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評(píng)論