溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PyQt5 QDockWidget控件的應(yīng)用方法

發(fā)布時(shí)間:2020-08-13 11:43:18 來(lái)源:億速云 閱讀:401 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)PyQt5 QDockWidget控件的應(yīng)用方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

前言

QDockWidget是一個(gè)可以??吭赒MainWindow內(nèi)的窗口控件,它可以保持在浮動(dòng)狀態(tài)或者在指定位置作為子窗口附加到主窗口中,QMainWindow類的主窗口對(duì)象保留有一個(gè)用于??看翱诘膮^(qū)域,這個(gè)區(qū)域在控件的中央周圍

QDoCKWidget類中的常用方法

方法描述
setWidget()在Dock窗口區(qū)域設(shè)置QWidget
setFloating()設(shè)置Dock窗口是否可以浮動(dòng),如果設(shè)置為T(mén)rue,則表示可以浮動(dòng)
setAlllowedAreas()設(shè)置窗口可以??康膮^(qū)域
LeftDockWidgetArea:左側(cè)??繀^(qū)域
RightDockWidgetArea:右側(cè)停靠區(qū)域
TopDockWidgetArea:頂部??繀^(qū)域
BottomDockWidgetArea:底部停靠區(qū)域
NoDockWidgetArea:不顯示W(wǎng)idget
setFearures()設(shè)置??看翱诘墓δ軐傩?/td>
DockWidgetClosable:可關(guān)閉
DockWidgetMovable:可移動(dòng)
DockWidgetFloatable:可漂浮
DockWidgetVerticalTitleBar:在左邊顯示垂直的標(biāo)簽欄
AllDockWidgetFeatures:具有前三種屬性的所有功能
NoDockWidgetFeatures:無(wú)法關(guān)閉,不能懸浮,不能移動(dòng)

實(shí)例:QDockWidget的使用

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class DockDemo(QMainWindow):
  def __init__(self,parent=None):
    super(DockDemo, self).__init__(parent)
    #設(shè)置水平布局
    layout=QHBoxLayout()
    #實(shí)例化菜單欄
    bar=self.menuBar()
    #創(chuàng)建主菜單file,在其中添加子菜單
    file=bar.addMenu('File')
    file.addAction('New')
    file.addAction('Save')
    file.addAction('quit')

    #創(chuàng)建QDockWidget窗口(標(biāo)題,自身窗口)
    self.items=QDockWidget('Dockable',self)

    #實(shí)例化列表窗口,添加幾個(gè)條目
    self.listWidget=QListWidget()
    self.listWidget.addItem('Item1')
    self.listWidget.addItem('Item2')
    self.listWidget.addItem('Item3')
    self.listWidget.addItem('Item4')

    #在窗口區(qū)域設(shè)置QWidget,添加列表控件
    self.items.setWidget(self.listWidget)

    #設(shè)置dock窗口是否可以浮動(dòng),True,運(yùn)行浮動(dòng)在外面,自動(dòng)與主界面脫離,F(xiàn)alse,默認(rèn)浮動(dòng)主窗口內(nèi),可以手動(dòng)脫離
    self.items.setFloating(False)

    #設(shè)置QTextEdit為中央小控件
    self.setCentralWidget(QTextEdit())
    #將窗口放置在中央小控件的右側(cè)
    self.addDockWidget(Qt.RightDockWidgetArea,self.items)

    self.setLayout(layout)
    self.setWindowTitle('Dock 例子')
if __name__ == '__main__':
  app=QApplication(sys.argv)
  demo=DockDemo()
  demo.show()
  sys.exit(app.exec_())

不重寫(xiě)QDockWidget類 

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QDockWidget, QPushButton, QApplication


class DockDemo(QMainWindow):
  def __init__(self):
    super().__init__()
    self.docker1=QDockWidget('Docker1', self)
    self.docker2=QDockWidget('Docker2', self)
    self.textEdit=QTextEdit()
    self.setCentralWidget(self.textEdit)
    self.btn1=QPushButton('btn1')
    self.btn2=QPushButton('btn2')
    self.btn1.clicked.connect(self.btn1fun)
    self.btn2.clicked.connect(self.btn2fun)
    self.docker1.setWidget(self.btn1)
    self.docker2.setWidget(self.btn2)
    self.addDockWidget(Qt.RightDockWidgetArea,self.docker1)
    self.addDockWidget(Qt.LeftDockWidgetArea, self.docker2)
    self.setWindowTitle('Dock 例子')
    self.resize(400, 300)
  def btn1fun(self):
    self.textEdit.setText('btn1')
    self.docker2.setFloating(True)#開(kāi)啟懸浮狀態(tài)
  def btn2fun(self):
    self.textEdit.setText('btn2')
    self.docker1.setFloating(True)
    
if __name__ == '__main__':
  app=QApplication(sys.argv)
  demo=DockDemo()
  demo.show()
  sys.exit(app.exec_())

效果: 

PyQt5 QDockWidget控件的應(yīng)用方法

重寫(xiě)QDockWidget類

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QDockWidget, QPushButton, QApplication, QWidget, QVBoxLayout


class docker(QDockWidget):
  def __init__(self, parent):
    super().__init__(parent)
    self.btn1 = QPushButton('btn1')
    self.btn2 = QPushButton('btn2')
    self.vbox = QVBoxLayout()
    self.vbox.addWidget(self.btn1)
    self.vbox.addWidget(self.btn2)
    self.wgt = QWidget()
    self.wgt.setLayout(self.vbox)
    self.setWidget(self.wgt)

class DockDemo(QMainWindow):
  def __init__(self):
    super().__init__()
    self.docker = docker(self)
    self.textEdit = QTextEdit()
    self.setCentralWidget(self.textEdit)
    self.docker.btn1.clicked.connect(self.btn1fun)
    self.docker.btn2.clicked.connect(self.btn2fun)
    self.addDockWidget(Qt.RightDockWidgetArea, self.docker)
    self.setWindowTitle('Dock 例子')
    self.resize(400, 300)

  def btn1fun(self):
    self.textEdit.setText('btn1')

  def btn2fun(self):
    self.textEdit.setText('btn2')


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

效果:

PyQt5 QDockWidget控件的應(yīng)用方法

關(guān)于PyQt5 QDockWidget控件的應(yīng)用方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI