我在确定动态创建的复选框是否已由用户在我创建的简单GUI中选中或取消选中时遇到问题。你知道吗
我已经修改了相关代码并粘贴在下面。尽管创建和命名4个qstandarditem可能很容易,但我处理的列表中包含了许多不同的项,这些项变化很大,因此自己创建它们是不可行的。你知道吗
任何帮助找出如何访问这些属性将不胜感激。你知道吗
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Splash(QWidget):
def __init__(self):
super().__init__()
# imagine this is a very long list...
self.seasons = ['summer','autumn','winter','spring']
self.initUI()
def initUI(self):
layout = QVBoxLayout()
list = QListView()
model = QStandardItemModel()
list.setModel(model)
printbtn = QPushButton('print values')
printbtn.clicked.connect(self.print_action)
for season in self.seasons:
item = QStandardItem(season)
item.setCheckable(True)
model.appendRow(item)
model.dataChanged.connect(lambda: self.print_action(item.text()))
layout.addWidget(printbtn)
layout.addWidget(list)
self.setLayout(layout)
self.show()
def print_action(self, item):
print('changed', item)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
ex = Splash()
sys.exit(app.exec_())
简言之,我可以检测到一个项目已检查使用模型.dataChanged把它和一个函数联系起来,但它不能区分季节。你知道吗
似乎您希望在项目的checkState发生更改时收到通知。你知道吗
在我看来,有两种可能的方法。你知道吗
第一种方式,QModel将发出“dataChanged”来刷新视图,因此您可以连接信号,这意味着项的checkState可能会更改。你知道吗
第二种方法,用定时器通知自己,自己检查。你知道吗
如果保留对列表(或模型)的引用,则可以按项目的文本搜索项目,然后获取其检查状态:
相关问题 更多 >
编程相关推荐