pyqt5 如何实现动态加载btn个数,持久化保存,具体实现代码
时间: 2024-05-15 18:15:21 浏览: 147
1. 动态加载btn个数
可以通过QWidget中的QVBoxLayout来实现动态添加按钮的功能,具体代码如下:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.vbox = QVBoxLayout()
self.setLayout(self.vbox)
self.addButton = QPushButton("Add Button")
self.addButton.clicked.connect(self.addButtonClicked)
self.vbox.addWidget(self.addButton)
def addButtonClicked(self):
button = QPushButton("Button")
self.vbox.addWidget(button)
```
在上面的代码中,我们创建了一个QWidget并设置了一个QVBoxLayout布局,然后在布局中添加了一个QPushButton,当点击这个按钮时,会调用addButtonClicked()函数来添加一个新的QPushButton。
2. 持久化保存
可以使用QSettings类来实现持久化保存的功能,将按钮的个数保存在QSettings中即可,具体代码如下:
```python
from PyQt5.QtCore import QSettings
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.vbox = QVBoxLayout()
self.setLayout(self.vbox)
self.addButton = QPushButton("Add Button")
self.addButton.clicked.connect(self.addButtonClicked)
self.vbox.addWidget(self.addButton)
self.settings = QSettings("mycompany", "myapp")
self.loadButtons()
def addButtonClicked(self):
button = QPushButton("Button")
self.vbox.addWidget(button)
self.saveButtons()
def saveButtons(self):
self.settings.setValue("button_count", self.vbox.count())
def loadButtons(self):
buttonCount = self.settings.value("button_count", 0)
for i in range(buttonCount):
button = QPushButton("Button")
self.vbox.addWidget(button)
```
在上面的代码中,我们创建了一个QSettings对象,并在initUI()函数中调用了loadButtons()函数来加载之前保存的按钮个数,然后在addButtonClicked()函数中添加一个新的QPushButton,并在saveButtons()函数中保存当前按钮个数。
阅读全文