主頁(yè) > 知識(shí)庫(kù) > PyQT5 QTDesigner窗口及組成的實(shí)現(xiàn)

PyQT5 QTDesigner窗口及組成的實(shí)現(xiàn)

熱門(mén)標(biāo)簽:400電話申請(qǐng)服務(wù)商選什么 千陽(yáng)自動(dòng)外呼系統(tǒng) 原裝電話機(jī)器人 平頂山外呼系統(tǒng)免費(fèi) 西藏智能外呼系統(tǒng)五星服務(wù) 江蘇客服外呼系統(tǒng)廠家 清遠(yuǎn)360地圖標(biāo)注方法 工廠智能電話機(jī)器人 在哪里辦理400電話號(hào)碼

一、主窗口成員

主窗口中的菜單欄、工具欄和狀態(tài)欄

1.菜單欄

我們可以直接在QTDesigner中輸入菜單選項(xiàng)即可。這些菜單選項(xiàng)本質(zhì)上都是動(dòng)作,關(guān)于動(dòng)作,在下面章節(jié)進(jìn)行描述。

2.工具欄(動(dòng)作)

要在工具欄中添加按鈕,我們首先要在QTDesigner的菜單欄中選擇視圖-->動(dòng)作編輯器,打開(kāi)動(dòng)作編輯器:

因?yàn)?,能夠用于工具欄的控件并不是普通的pushButton按鈕,而是叫做Action的動(dòng)作。

此時(shí),我們就可以將需要的動(dòng)作(Action)拖拽到工具欄中:

當(dāng)然,我們可以自定義一些Action,并添加到工具欄中。

我們可以在鼠標(biāo)右鍵中選擇新建工具欄,從而創(chuàng)建多個(gè)工具欄(每個(gè)工具欄之間有4個(gè)豎點(diǎn)隔開(kāi)):

注意:動(dòng)作編輯器中的所有動(dòng)作都是菜單欄和工具欄共用的。本質(zhì)上說(shuō),工具欄就是菜單欄中功能的快捷按鈕,方便用戶使用。

二、窗口類型

我們?cè)赒TDesigner中新建窗口的時(shí)候,可以看到有以下幾種窗口:

窗口大致分為三種,Main Window、Widget和Dialog。

Main Window:主窗口,其中包含菜單欄、工具欄、狀態(tài)欄,是我們經(jīng)常使用的窗口類型,一般用于程序的主窗口。

Dialog:對(duì)話窗口的基類,沒(méi)有菜單欄、工具欄、狀態(tài)欄,但可能有默認(rèn)的一些操作按鈕,例如確定、關(guān)閉等。

Widget:當(dāng)我們不確定窗口用途的時(shí)候,可以使用Widget窗口。

三、關(guān)閉窗口的兩種方式

第一種方式是發(fā)送信號(hào)調(diào)用主窗口的Close方法。

第二種方式是發(fā)送信號(hào)調(diào)用QApplication的quit方法(即退出整個(gè)程序)。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget

from ui3 import Ui_MainWindow


class MyWindow(QMainWindow):
  def __init__(self):
    super(MyWindow, self).__init__()

  # 重寫(xiě)close槽函數(shù)
  def close(self):
    print("這里我們重寫(xiě)一下主窗口的close方法")
    super(MyWindow, self).close()

  # 調(diào)用App.quit()來(lái)退出程序
  def quitApp(self):
    app = QApplication.instance()
    print("退出整個(gè)程序")
    app.quit()


if __name__ == '__main__':
  # 創(chuàng)建一個(gè)App實(shí)例
  app = QApplication(sys.argv)
  # 創(chuàng)建一個(gè)主窗口
  mainWin = MyWindow()
  # 使用我們生成的UI窗口實(shí)例
  ui = Ui_MainWindow()
  # 將主窗口傳遞進(jìn)去,讓Ui_MainWindow幫我們向主窗口上放置組件
  ui.setupUi(mainWin)
  # 顯示
  mainWin.show()

  # 主循環(huán)
  sys.exit(app.exec_())

其中close槽函數(shù),對(duì)應(yīng)主窗口原本的close方法(只是重寫(xiě)一下打印了一句話)。

quitApp是另一個(gè)槽函數(shù),由另一個(gè)按鈕觸發(fā),同樣可以達(dá)到關(guān)閉窗口的效果(退出整個(gè)程序)。

下面附上自動(dòng)生成的ui3.py的代碼(就兩個(gè)按鈕,關(guān)聯(lián)了兩個(gè)槽函數(shù)):

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

# Form implementation generated from reading ui file 'ui3.ui'
#
# Created by: PyQt5 UI code generator 5.14.2
#
# 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(1264, 886)
    sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
    sizePolicy.setHorizontalStretch(1)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
    MainWindow.setSizePolicy(sizePolicy)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.pushButton = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton.setGeometry(QtCore.QRect(120, 130, 75, 23))
    self.pushButton.setObjectName("pushButton")
    self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton_2.setGeometry(QtCore.QRect(280, 140, 75, 23))
    self.pushButton_2.setObjectName("pushButton_2")
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 1264, 23))
    self.menubar.setObjectName("menubar")
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)
    self.pushButton.clicked.connect(MainWindow.close)
    self.pushButton_2.clicked.connect(MainWindow.quitApp)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

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

四、窗口坐標(biāo)

通過(guò)以下方式可以獲取窗口的坐標(biāo)和尺寸:

# 使用一個(gè)按鈕觸發(fā)該槽函數(shù),用于獲取當(dāng)前窗口的位置和尺寸
def getSizeOfMainWin(self):
  # 窗口左上角所在坐標(biāo)
  print(self.x()) # 100
  print(self.y()) # 100
  # 整個(gè)窗口的寬和高
  print(self.width()) # 1264
  print(self.height()) # 886
  # 可用區(qū)域左上角所在坐標(biāo)
  print(self.geometry().x()) # 101,說(shuō)明可用區(qū)域左邊有一個(gè)1px的邊框
  print(self.geometry().y()) # 131,說(shuō)明窗口上面的標(biāo)題欄為31px(包含1px邊框)
  # 整個(gè)窗口的寬和高,與self.width()、self.height()相同
  print(self.geometry().width()) # 1264
  print(self.geometry().height()) # 886

五、窗口和應(yīng)用程序坐標(biāo)

有以下兩種方法可以設(shè)置窗口和應(yīng)用程序坐標(biāo)。

需要引入:from PyQt5.QtGui import QIcon

1.使用窗口對(duì)象的setWindowIcon方法

當(dāng)使用窗口的setWindowIcon方法時(shí),在Windows系統(tǒng)下才生效(在MAC中不能生效):

class MyWindow(QMainWindow):
  def __init__(self):
    super(MyWindow, self).__init__()
    self.initUI()

  def initUI(self):
    self.setWindowIcon(QIcon("icon.ico"))

效果:

2.使用QApplication實(shí)例的setWindowIcon方法

if __name__ == '__main__':
  # 創(chuàng)建一個(gè)App實(shí)例
  app = QApplication(sys.argv)
  app.setWindowIcon(QIcon("icon.ico"))
  
  # 創(chuàng)建一個(gè)主窗口
  mainWin = MyWindow()
  # 使用我們生成的UI窗口實(shí)例
  ui = Ui_MainWindow()
  # 將主窗口傳遞進(jìn)去,讓Ui_MainWindow幫我們向主窗口上放置組件
  ui.setupUi(mainWin)
  # 顯示
  mainWin.show()
  # 主循環(huán)
  sys.exit(app.exec_())

這種方式對(duì)于Windows系統(tǒng)和MAC系統(tǒng)都生效。

到此這篇關(guān)于PyQT5 QTDesigner窗口及組成的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)PyQT5 QTDesigner窗口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PyCharm+PyQt5+QtDesigner配置詳解
  • PYQT5 vscode聯(lián)合操作qtdesigner的方法
  • pyqt5、qtdesigner安裝和環(huán)境設(shè)置教程
  • pyqt5利用pyqtDesigner實(shí)現(xiàn)登錄界面

標(biāo)簽:隨州 西安 股票 日照 錦州 白城 安慶 天水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PyQT5 QTDesigner窗口及組成的實(shí)現(xiàn)》,本文關(guān)鍵詞  PyQT5,QTDesigner,窗口,及,組成,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PyQT5 QTDesigner窗口及組成的實(shí)現(xiàn)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于PyQT5 QTDesigner窗口及組成的實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章