簡體   English   中英

從 pyqt 中刪除小部件

[英]Deleting widgets from pyqt

class Window(QtGui.QMainWindow):
  def __init__(self):
    super(Window, self).__init__()
    self.tabs()

  def home(self):
    df = QtGui.QPushButton('hello', self)
    df.show()

  def series(self):
    df = QtGui.QCheckBox('hello', self)
    df.show()   

  def tabs(self):
    btn_home = QtGui.QPushButton(QtGui.QIcon('home.png'), 'Home', self)
    btn_home.clicked.connect(self.home)

    btn_series = QtGui.QPushButton(QtGui.QIcon('series.png'),'Series', self)
    btn_series.clicked.connect(self.series)

    self.show()

def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())

if __name__ == '__main__': run()

我想在單擊系列按鈕時刪除主頁模塊中顯示的小部件,並在單擊主頁按鈕時從系列模塊中刪除小部件。 到目前為止發生的事情是,當我單擊系列按鈕時,他以前來自 home 模塊的小部件仍然存在。

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

import sys

class Window(QMainWindow):
  def __init__(self):
    super(Window, self).__init__()
    self.widget =QWidget()
    self.layout = QHBoxLayout()
    self.widget.setLayout(self.layout)
    self.setCentralWidget(self.widget)
    self.tabs()

  def home(self):
    self.clear()
    self.df1 = QPushButton('hello')
    self.layout.addWidget(self.df1)

  def series(self):
    self.clear()
    self.df2 = QCheckBox('hello')
    self.layout.addWidget(self.df2)

  def tabs(self):
    self.btn_home = QPushButton(QIcon('home.png'), 'Home')
    self.btn_home.clicked.connect(self.home)
    self.layout.addWidget(self.btn_home)
    self.btn_series = QPushButton(QIcon('series.png'),'Series')
    self.btn_series.clicked.connect(self.series)
    self.layout.addWidget(self.btn_series)
    self.show()

  def clear(self):
      item = self.layout.itemAt(2)
      if item != None :
          widget = item.widget()
          if widget != None:
              self.layout.removeWidget(widget)
              widget.deleteLater()    

def run():
    app = QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())

if __name__ == '__main__': run()

我的版本是

self.main_canvas.children().remove(cogmapui)
cogmapui.deleteLater()

我通過把一個檢查它print("Deleted")在cogmapui的__del__功能,是的,它被調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM