簡體   English   中英

如何使用按鈕一次迭代一個列表的元素

[英]How to iterate over elements of a list one at a time using a pushButton

我有一個字符串列表,我想通過每次按下按鈕來打印它的下一個元素。

另外,如何通過按另一個按鈕來打印列表的上一項?

這是一個示例代碼:

from PyQt5 import QtCore, QtWidgets
import sys

class Main(QtWidgets.QMainWindow):

    def __init__(self):
      self.pushbutton = QtWidgets.QPushButton(self)
      self.pushbutton.move(20,20)
      self.list = ["first","second","third"]
      self.setGeometry(300,300,250,180)
      self.pushbutton.clicked.connect(self.showElements)
      self.show()
     
     def showElements(self):
      pass
      
app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

您可以使用generators來獲得您要求的功能

例如:

a = [1,2,3]

def myFunction():
    for item in a:
       yield item

# Get iterator
iterator = myFunction()

# Call this on every button push
nextItem = next(iterator)
print(nextItem)

這是一個有效的 repl.it 項目:

https://repl.it/@HarunYlmaz/generators-iterators

試試看:

import sys
from PyQt5 import QtCore, QtWidgets


class Example(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.centralWidget = QtWidgets.QWidget()
        self.setCentralWidget(self.centralWidget)

        self.list = ["first", "second", "third"]
        self.len_list = len(self.list) - 1
        self.index = 0

        self.label = QtWidgets.QLabel(self.list[self.index])
        
        button1 = QtWidgets.QPushButton('next')
        button1.clicked.connect(self.search_next)
        button2 = QtWidgets.QPushButton('previous')
        button2.clicked.connect(self.search_previous)
        
        layout = QtWidgets.QGridLayout(self.centralWidget)
        layout.addWidget(self.label, 0, 0, 1, 2, alignment=QtCore.Qt.AlignHCenter)
        layout.addWidget(button2, 1, 0)
        layout.addWidget(button1, 1, 1)        
     
    def search_next(self):
        if self.index >= self.len_list:
            self.index = 0
        else:
            self.index += 1
        self.label.setText(self.list[self.index])
        
    def search_previous(self):
        if self.index <= 0:
            self.index = self.len_list
        else:
            self.index -= 1
        self.label.setText(self.list[self.index])        
      
      
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

在此處輸入圖像描述

暫無
暫無

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

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