2017-04-12 3 views
0

testTemplate.py:Modifier texte dans une fenêtre sur le bouton cliquez sur

from PySide import QtCore, QtGui 

class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setObjectName("Dialog") 
     Dialog.resize(153, 130) 
     self.testlabel = QtGui.QLabel(Dialog) 
     self.testlabel.setGeometry(QtCore.QRect(50, 40, 46, 13)) 
     self.testlabel.setObjectName("testlabel") 
     self.NextButton = QtGui.QPushButton(Dialog) 
     self.NextButton.setGeometry(QtCore.QRect(40, 80, 75, 23)) 
     self.NextButton.setObjectName("NextButton") 

     self.retranslateUi(Dialog) 
     QtCore.QMetaObject.connectSlotsByName(Dialog) 

    def retranslateUi(self, Dialog): 
     Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) 
     self.testlabel.setText(QtGui.QApplication.translate("Dialog", "TextLabel", None, QtGui.QApplication.UnicodeUTF8)) 
     self.NextButton.setText(QtGui.QApplication.translate("Dialog", "Next", None, QtGui.QApplication.UnicodeUTF8)) 

main.py:

from PySide.QtCore import * 
from PySide.QtGui import * 
import sys 
import testTemplate 

class MainDialog(QDialog, testTemplate.Ui_Dialog): 
    def __init__(self, parent=None): 
     super(MainDialog, self).__init__(parent) 
     self.setupUi(self) 
     self.connect(self.NextButton, SIGNAL("clicked()"), self.changetext) 
     text_list = ['abc','xyz','bvc'] 

    def changetext(self): 
     print "print" 

app = QApplication(sys.argv) 
form = MainDialog() 
form.show() 
app.exec_() 

fenêtre de sortie:

Output

Question:

Chaque fois que je clique sur le bouton Next, je souhaite que le texte passe à l'entrée suivante de la liste (text_list dans le code) et lorsque la liste atteint la fin, il doit fermer la fenêtre.

Répondre

1

Je définirais text_list comme suit:

self.text_list = ['abc','xyz','bvc'] 
self.text_list.reverse() # in case you want to display items in the same order as is given the list 

Ensuite, la méthode changetext pourrait ressembler à ceci:

def changetext(self): 
    if self.text_list: # test whether list is nonempty 
     self.testlabel.setText(self.text_list.pop()) 
    else: 
     self.close() # close the application 
+0

Clever! J'essayais de faire défiler la liste. Popping l'élément donnera le résultat exact. Merci :) – x899