Найти - Пользователи
Полная версия: PyQt4. Сигнал один раз срабатывает
Начало » GUI » PyQt4. Сигнал один раз срабатывает
1
MetalHead
Добрый день, товарищи! Собственно в процессе изучения столкнулся с такой проблемой, при клике на кнопку(button), функция срабатывает один раз, почему так? Никак не пойму.
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
    def __init__(self):
        self.i = 0
        super(Example, self).__init__()
        self.initUI()
        
    def initUI(self):
        self.setWindowTitle("Text Generator")
        self.setGeometry(300, 300, 350, 250)
        self.grid = QtGui.QGridLayout()
        button = QtGui.QPushButton("Generate text", self)
        button.move(125, 200)
        button.clicked.connect(self.generateText)
        self.setLayout(self.grid)
        self.show()
    def generateText(self, event):
        text = ["first", "second", "three", "fourth", "fifth", "sixth"]
        label = QtGui.QLabel(text[self.i], self)
        self.grid.addWidget(label, self.i, 0)
        self.i += 1
    
def main():
    app = QtGui.QApplication(sys.argv)
    gui = Example()
    sys.exit(app.exec())
if __name__ == "__main__":
    main()
py.user.next
#!/usr/bin/env python3
 
from PyQt4 import QtGui
import sys
 
class Example(QtGui.QWidget):
 
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()
 
    def initUI(self):
 
        self.text = ["first", "second", "three",
                     "fourth", "fifth", "sixth"]
        self.ti = 0
 
        self.grid = QtGui.QGridLayout()
        self.gi = 0
 
        button = QtGui.QPushButton("Generate text", self)
        #button.move(125, 200)
        button.clicked.connect(self.generateText)
 
        self.grid.addWidget(button, 0, 0)
        self.grid.addWidget(QtGui.QLabel(''), 1, 0)
        self.gi += 2
 
        self.setLayout(self.grid)
 
        self.setWindowTitle("Text Generator")
        self.setGeometry(300, 300, 350, 250)
        self.show()
 
    def generateText(self, event):
        text, ti = self.text, self.ti
        if ti < len(text):
            label = QtGui.QLabel(text[ti], self)
            self.grid.addWidget(label, self.gi, 0)
            self.ti += 1
            self.gi += 1
 
def main():
    app = QtGui.QApplication(sys.argv)
    gui = Example()
    sys.exit(app.exec_())
 
if __name__ == "__main__":
    main()
MetalHead
Спасибо, разобрался.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB