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

對(duì)PyQt5基本窗口控件 QMainWindow的使用詳解

 更新時(shí)間:2019年06月19日 11:52:35   作者:zhushoutao  
今天小編就為大家分享一篇對(duì)PyQt5基本窗口控件 QMainWindow的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

QMainWindow基本介紹

QMainWindow主窗口為用戶提供了一個(gè)應(yīng)用程序框架,它有自己的布局,可以在布局中添加控件。

窗口類型介紹

PyQt5中,主要使用以下三個(gè)類來(lái)創(chuàng)建窗口,可以直接使用,也可以繼承后再使用

QMainWindow

QWidget

QDialog

QMainWindow

QMainWindow可以包含菜單欄,工具欄,狀態(tài)欄,標(biāo)題欄等,是GUI程序的主窗口。

如果我們需要?jiǎng)?chuàng)建主窗口程序,就使用該類。

QDialog

QDialog是對(duì)話框窗口的基類,對(duì)話框一般用來(lái)執(zhí)行短期任務(wù),或者與用戶進(jìn)行互動(dòng),它可以是模態(tài)的也可以是非模態(tài)的。QDialog沒(méi)有菜單欄,工具欄,狀態(tài)欄等。

如果我們需要的是對(duì)話框,就選擇該類。

QWidget

該類作為QMainWindow和QWidget的父類,并未細(xì)化到主窗口或者對(duì)話框,作為通用窗口類,如果不確定具體使用哪種窗口類,就可以使用該類。

創(chuàng)建主窗口

QMainWindow官方文檔

如果一個(gè)窗口包含一個(gè)或者多個(gè)窗口,這個(gè)窗口就是父窗口,被包含的窗口就是子窗口。沒(méi)有父窗口的窗口就是頂層窗口,QMainWindow就是頂層窗口,它可以包含很多界面元素。

在OyQt中,在主窗口中會(huì)有一個(gè)控件(Widget)占位符來(lái)占著中心窗口,可以使用setCentralWidget()來(lái)設(shè)置中心窗口。

重要方法

方法 描述
addToolBar() 添加工具欄
centralWidget() 返回窗口中心的控件,未設(shè)置返回NULL
menuBar() 返回主窗口的菜單欄
setCentralWidget() 設(shè)置窗口中心的控件
setStatusBar() 設(shè)置狀態(tài)欄
statusBar() 獲取狀態(tài)欄對(duì)象

Note: Creating a main window without a central widget is not supported. You must have a central widget even if it is just a placeholder.

QMainWindow不能設(shè)置布局,因?yàn)樗凶约旱牟季?,不過(guò)中心窗口是可以使用布局的。

創(chuàng)建一個(gè)主窗口

# _*_ coding:utf-8 _*_
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QPushButton)
from PyQt5.QtGui import QIcon

class MainWindow(QMainWindow):
 def __init__(self, parent=None):
  super(MainWindow, self).__init__(parent)
  self.init_ui()

 def init_ui(self):
  #設(shè)置窗口屬性
  self.setGeometry(200, 200, 400, 200)
  self.setWindowTitle('創(chuàng)建主窗口')
  self.setWindowIcon(QIcon(r"E:\\1.jpg"))
  #設(shè)置狀態(tài)欄
  self.status = self.statusBar()
  self.status.showMessage('我是狀態(tài)欄', 5000)


if __name__ == "__main__":
 app = QApplication(sys.argv[1:])

 window = MainWindow()
 window.show()

 sys.exit(app.exec_())

主窗口居中顯示

# _*_ coding:utf-8 _*_
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QDesktopWidget)
from PyQt5.QtGui import QIcon

class MainWindow(QMainWindow):
 def __init__(self, parent=None):
  super(MainWindow, self).__init__(parent)
  self.init_ui()

 def init_ui(self):
  #設(shè)置窗口屬性
  self.resize(400, 200)
  self.setWindowTitle('主窗口居中顯示')
  self.setWindowIcon(QIcon(r"E:\\1.jpg"))
  #設(shè)置狀態(tài)欄
  self.status = self.statusBar()
  self.status.showMessage('我是狀態(tài)欄', 5000)
  #居中顯示處理
  self.move_center()

 def move_center(self):
  screen = QDesktopWidget().screenGeometry()
  form = self.geometry()
  x_move_step = (screen.width() - form.width()) / 2
  y_move_step = (screen.height() - form.height()) / 2
  self.move(x_move_step, y_move_step)

if __name__ == "__main__":
 app = QApplication(sys.argv[1:])

 window = MainWindow()
 window.show()

 sys.exit(app.exec_())

screen = QDesktopWidget().screenGeometry()

獲取當(dāng)前屏幕的大小

self.geometry()

獲取窗口大小

關(guān)閉主窗口

# _*_ coding:utf-8 _*_
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout,
        QPushButton, QMainWindow)

class MainWindow(QMainWindow):
 def __init__(self):
  super(MainWindow, self).__init__()
  self.init_ui()

 def init_ui(self):
  self.setWindowTitle('關(guān)閉主窗口')

  layout = QVBoxLayout()
  self.close_btn = QPushButton('關(guān)閉', self)
  layout.addWidget(self.close_btn)

  main_frame = QWidget()
  self.setCentralWidget(main_frame)
  main_frame.setLayout(layout)

  self.close_btn.clicked.connect(self.on_button_click)

 def on_button_click(self):
  #將信息顯示在狀態(tài)欄中
  sender = self.sender()
  msg = sender.text() + " 被按下了"
  status = self.statusBar()
  status.showMessage(msg, 5000)
  #程序退出
  app = QApplication.instance()
  app.quit()

if __name__ == "__main__":
 app = QApplication(sys.argv[1:])

 window = MainWindow()
 window.show()

 sys.exit(app.exec_())

self.close_btn.clicked.connect(self.on_button_click)

PyQt中控件之間通信使用信號(hào)(Signal)和槽(slot)機(jī)制。

定義的方式為 控件.消息.connect(槽)

上例中,就是將button的clicked信號(hào)跟槽on_button_click進(jìn)行了綁定。

以上這篇對(duì)PyQt5基本窗口控件 QMainWindow的使用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 實(shí)現(xiàn)二維字典的鍵值合并等函數(shù)

    python 實(shí)現(xiàn)二維字典的鍵值合并等函數(shù)

    今天小編就為大家分享一篇python 實(shí)現(xiàn)二維字典的鍵值合并等函數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 詳盡講述用Python的Django框架測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的教程

    詳盡講述用Python的Django框架測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的教程

    這篇文章主要介紹了詳盡講述用Python的Django框架測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的教程,主要使用TDD工具,全文介紹非常詳細(xì),需要的朋友可以參考下
    2015-04-04
  • python中星號(hào)變量的幾種特殊用法

    python中星號(hào)變量的幾種特殊用法

    不知道大家知不知道在Python中,星號(hào)除了用于乘法數(shù)值運(yùn)算和冪運(yùn)算外,還有一種特殊的用法"在變量前添加單個(gè)星號(hào)或兩個(gè)星號(hào)",實(shí)現(xiàn)多參數(shù)的傳入或變量的拆解,本文將詳細(xì)介紹"星號(hào)參數(shù)"的用法。有需要的可以參考借鑒。
    2016-09-09
  • Python 并行化執(zhí)行詳細(xì)解析

    Python 并行化執(zhí)行詳細(xì)解析

    這篇文章主要介紹了Python 并行化執(zhí)行詳細(xì)解析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-07-07
  • 嘗試使用Python多線程抓取代理服務(wù)器IP地址的示例

    嘗試使用Python多線程抓取代理服務(wù)器IP地址的示例

    這篇文章主要介紹了嘗試使用Python多線程抓取代理服務(wù)器IP地址的示例,盡管有GIL的存在使得Python并不能真正實(shí)現(xiàn)多線程并行,需要的朋友可以參考下
    2015-11-11
  • 詳解Python列表賦值復(fù)制深拷貝及5種淺拷貝

    詳解Python列表賦值復(fù)制深拷貝及5種淺拷貝

    這篇文章主要介紹了Python列表賦值,復(fù)制,深拷貝以及5種淺拷貝詳解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Python redis操作實(shí)例分析【連接、管道、發(fā)布和訂閱等】

    Python redis操作實(shí)例分析【連接、管道、發(fā)布和訂閱等】

    這篇文章主要介紹了Python redis操作,結(jié)合實(shí)例形式分析了Python redis的連接、管道、發(fā)布和訂閱等相關(guān)概念、原理及操作技巧,需要的朋友可以參考下
    2019-05-05
  • Python使用Yagmail庫(kù)實(shí)現(xiàn)自動(dòng)化郵件營(yíng)銷

    Python使用Yagmail庫(kù)實(shí)現(xiàn)自動(dòng)化郵件營(yíng)銷

    在數(shù)字營(yíng)銷領(lǐng)域,自動(dòng)化郵件營(yíng)銷是一種高效、低成本的方式,能夠幫助企業(yè)與客戶保持溝通,提升品牌忠誠(chéng)度,而Yagmail是一個(gè)簡(jiǎn)潔且功能強(qiáng)大的Python庫(kù),可以大大簡(jiǎn)化郵件發(fā)送的過(guò)程,本文將詳細(xì)介紹如何使用Yagmail庫(kù)來(lái)實(shí)現(xiàn)自動(dòng)化郵件營(yíng)銷,需要的朋友可以參考下
    2024-12-12
  • Django中ORM表的創(chuàng)建和增刪改查方法示例

    Django中ORM表的創(chuàng)建和增刪改查方法示例

    這篇文章主要給大家介紹了關(guān)于Django中ORM表的創(chuàng)建和增刪改查等基本操作的方法,還給大家分享了django orm常用查詢篩選的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • python爬蟲獲取新浪新聞教學(xué)

    python爬蟲獲取新浪新聞教學(xué)

    在本篇內(nèi)容中小編給大家分享的是關(guān)于python爬蟲獲取新浪新聞的相關(guān)步驟和知識(shí)點(diǎn),需要的可以跟著學(xué)習(xí)下。
    2018-12-12

最新評(píng)論