pyqt5动态添加按钮

举报
风吹稻花香 发表于 2021/06/05 22:35:41 2021/06/05
【摘要】 QMainWindow动态添加按钮,添加后需要调用show(),才可以显示出来。 self.start_file_aaa = QPushButton(self)self.start_file_aaa.setGeometry(1210, 10, 100, 30)self.start_file_aaa.setObjectName('start')self.start_file_...

QMainWindow动态添加按钮,添加后需要调用show(),才可以显示出来。


  
  1. self.start_file_aaa = QPushButton(self)
  2. self.start_file_aaa.setGeometry(1210, 10, 100, 30)
  3. self.start_file_aaa.setObjectName('start')
  4. self.start_file_aaa.setText('加载11')
  5. self.start_file_aaa.show()

 

只能动态添加工具栏按钮


  
  1. #coding=utf-8
  2. import sys
  3. from PyQt5.QtWidgets import QMainWindow, QApplication, QMenuBar, QAction, qApp, QLabel
  4. from PyQt5.QtGui import QIcon
  5. from PyQt5.QtCore import QCoreApplication
  6. class Example3(QMainWindow):
  7. def __init__(self):
  8. super().__init__()
  9. self.initUI()
  10. def add(self):
  11. print('asdfsdf')
  12. self.toolbar.addAction('bbbbb', self.add)
  13. def initUI(self):
  14. exitAction = QAction(QIcon('d:/1.jpg'), 'asdf', self)
  15. exitAction.setShortcut('Ctrl+Q')
  16. exitAction.triggered.connect(qApp.quit)
  17. self.toolbar = self.addToolBar('Exit123')
  18. self.toolbar.addAction(exitAction)
  19. self.toolbar.addAction( 'asdf',self.add)
  20. self.setGeometry(300, 300, 450, 450)
  21. self.setWindowTitle('QMainWindow的ToolBar')
  22. self.show()
  23. pass
  24. def main3():
  25. app = QApplication(sys.argv)
  26. example = Example3()
  27. sys.exit(app.exec_())
  28. pass
  29. if __name__ == '__main__':
  30. main3()

 

工具/版本

(1)安装环境:Windows7 64bit

(2)使用版本Python3.6

(3)PYQT5

(4)eric6

使用布局,请参考这篇文章

Pyqt 动态的添加控件

删除控件:

self.buttom.deleteLater()

关闭控件:

self.button.close()或者self.button.hide()

重新显示控件:

如果是删除,需要重新创建控件然后self.button.show()

如果是关闭,或者隐藏,self.show()

 

此处需注意:

如果多次创建相同名称的控件,操作创建的控件会显示异常,需要删除再创建

 


  
  1. # coding=utf-8
  2. from PyQt5.QtWidgets import QWidget, QApplication, QPushButton
  3. import sys
  4. class Example(QWidget):
  5. def __init__(self):
  6. super().__init__()
  7. self.initUI()
  8. def initUI(self):
  9. self.resize(550, 300)
  10. self.setWindowTitle('动态删除增加控件测试')
  11. self.CreatUI()
  12. def CreatUI(self):
  13. self.lb1 = QPushButton("按键1", self)
  14. self.lb1.setGeometry(100, 200, 100, 50)
  15. self.lb2 = QPushButton("按键1", self)
  16. self.lb2.setGeometry(280, 200, 100, 50)
  17. self.bt1 = QPushButton('删除', self)
  18. self.bt2 = QPushButton('新建', self)
  19. self.bt1.move(100, 20)
  20. self.bt2.move(280, 20)
  21. self.bt1.clicked.connect(self.deleteWidget)
  22. self.bt2.clicked.connect(self.addWidget)
  23. def deleteWidget(self):
  24. self.lb1.deleteLater()
  25. self.lb2.deleteLater()
  26. self.bt1.deleteLater()
  27. def addWidget(self):
  28. self.CreatUI()
  29. self.showWidget()
  30. def closeWidget(self):
  31. # self.lb1.close()
  32. # self.lb2.close()
  33. # self.bt1.close()
  34. # 或者使用hide
  35. self.lb1.hide()
  36. self.lb2.hide()
  37. self.bt1.hide()
  38. def showWidget(self):
  39. self.lb1.show()
  40. self.lb2.show()
  41. self.bt1.show()
  42. if __name__ == '__main__':
  43. app = QApplication(sys.argv)
  44. ex = Example()
  45. ex.show()
  46. sys.exit(app.exec_())
 

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/108652278

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。