2010-10-02 2 views
0

Pour être plus clair, voici comment les choses peuvent fonctionner.Copier des chaînes à partir de plusieurs slots lineEdit comme variables dans un slot textEdit dans PyQt4

En python, pour créer une variable, nous utilisons simplement

var1 = raw_input('your name?') 

Alors que lors de l'utilisation

print 'your name is ' +var1 

Il imprime la chaîne stockée dans var1.

La question est de savoir comment faire cela en utilisant Pyqt4? J'ai 3 lineEdit symbolisent comme nom, âge et genre et un textEdit pour imprimer des cordes de lineEdit dans ce textEdit. c'est comme faire un annuaire. c'est possible? à quoi ressemblera le code? Je suis impatiemment de connaître la réponse ..

Ici, je fournis une source pour rendre les choses plus claires.

C'est le ui:

# -*- coding: utf-8 -*- 

# Form implementation generated from reading ui file 'phonebook.ui' 
# 
# Created: Sat Oct 2 15:18:52 2010 
#  by: PyQt4 UI code generator 4.7.2 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt4 import QtCore, QtGui 

class Ui_phonebook(object): 
    def setupUi(self, phonebook): 
     phonebook.setObjectName("phonebook") 
     phonebook.resize(240, 300) 
     phonebook.setMinimumSize(QtCore.QSize(240, 300)) 
     phonebook.setMaximumSize(QtCore.QSize(240, 300)) 
     self.label = QtGui.QLabel(phonebook) 
     self.label.setGeometry(QtCore.QRect(20, 30, 57, 14)) 
     self.label.setObjectName("label") 
     self.label_2 = QtGui.QLabel(phonebook) 
     self.label_2.setGeometry(QtCore.QRect(20, 60, 57, 14)) 
     self.label_2.setObjectName("label_2") 
     self.lineEdit = QtGui.QLineEdit(phonebook) 
     self.lineEdit.setGeometry(QtCore.QRect(110, 30, 113, 20)) 
     self.lineEdit.setObjectName("lineEdit") 
     self.lineEdit_2 = QtGui.QLineEdit(phonebook) 
     self.lineEdit_2.setGeometry(QtCore.QRect(110, 60, 113, 20)) 
     self.lineEdit_2.setObjectName("lineEdit_2") 
     self.textEdit = QtGui.QTextEdit(phonebook) 
     self.textEdit.setGeometry(QtCore.QRect(20, 142, 201, 141)) 
     self.textEdit.setObjectName("textEdit") 
     self.pushButton = QtGui.QPushButton(phonebook) 
     self.pushButton.setGeometry(QtCore.QRect(70, 100, 89, 23)) 
     self.pushButton.setObjectName("pushButton") 

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

    def retranslateUi(self, phonebook): 
     phonebook.setWindowTitle(QtGui.QApplication.translate("phonebook", "Simple Phonebook", None, QtGui.QApplication.UnicodeUTF8)) 
     self.label.setText(QtGui.QApplication.translate("phonebook", "Name:", None, QtGui.QApplication.UnicodeUTF8)) 
     self.label_2.setText(QtGui.QApplication.translate("phonebook", "E-mail:", None, QtGui.QApplication.UnicodeUTF8)) 
     self.lineEdit.setText(QtGui.QApplication.translate("phonebook", "lineEdit", None, QtGui.QApplication.UnicodeUTF8)) 
     self.lineEdit_2.setText(QtGui.QApplication.translate("phonebook", "lineEdit_2", None, QtGui.QApplication.UnicodeUTF8)) 
     self.pushButton.setText(QtGui.QApplication.translate("phonebook", "Preview", None, QtGui.QApplication.UnicodeUTF8)) 

Ceci est la principale source:

#! /usr/bin/env python 

import sys 
from PyQt4 import QtCore, QtGui 
from phonebook import Ui_phonebook 

class Main(QtGui.QDialog): 
    def __init__(self, parent=None): 
    QtGui.QWidget.__init__(self, parent) 
    self.ui = Ui_phonebook() 
    self.ui.setupUi(self) 
    self.center() 

    QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'), self.preview) 

    def preview(self): 
    lineEdit = '"content inside lineEdit"' 
    lineEdit_2 = '"content inside lineEdit_2"' 
    self.ui.textEdit.setText('Name: ' +lineEdit +'\n\nEmail: ' +lineEdit_2) 

    def center(self): 
    screen = QtGui.QDesktopWidget().screenGeometry() 
    size = self.geometry() 
    self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2) 


if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    main = Main() 
    main.show() 
    sys.exit(app.exec_()) 
+0

Comment la réponse devrait être détaillée? Êtes-vous à la recherche d'un tutoriel complet? Avez-vous essayé d'autres didacticiels PyQt en ligne? Avez-vous déjà écrit un "Hello World" dans PyQt ou d'autres programmes simples? –

+0

non .. je ne veux pas de détail .. je programmais habituellement en pyqt4 .. cette fois je dois créer un annuaire comme gui .. et je n'avais aucune idée comment connecter tous 3 lineEdit en un textEdit quand le bouton de commande est cliqué() .. peut me donner une idée ?? – nEk0

Répondre

0

Lorsqu'un bouton est cliqué dans Qt (et PyQt), il émet un signal . Vous pouvez connecter ce signal à n'importe quel slot (dans PyQt qui serait n'importe quelle méthode Python) et faire ce que vous voulez dans ce slot - comme regarder du texte à partir de 3 cases et imprimer quelque chose.

Par exemple, supposons que vous avez un bouton vous avez créé avec:

self.start_button = QPushButton("&Start") 

Connectez son signal clicked:

self.connect(self.start_button, SIGNAL('clicked()'), self.on_start) 

la méthode on_start de votre classe. Dans cette méthode, invoquez les méthodes pertinentes d'autres widgets pour faire ce que vous souhaitez.

+0

umm .. j'ai fait ceux dans mon code source d'origine .. je veux que le gui fonctionne comme exemple dans ma question .. – nEk0

+0

@ nEk0: vous voulez trop, alors: -/ –

+0

aww .. pas de solution alors ?? – nEk0

0

J'ai résolu ce mystère .. bien, tout ce que j'ai à insérer est le texte() !!

def preview(self): 
    lineEdit = self.ui.lineEdit.text() 
    lineEdit_2 = self.ui.lineEdit_2.text() 
    self.ui.textEdit.setText('Name: ' +lineEdit +'\n\nEmail: ' +lineEdit_2) 

oui .. qui devrait faire mes rêves .. merci à tous ceux qui ont mis Efford pour me aider .. =^_^=

Questions connexes