2015-12-29 29 views
0

我有一個GUI應用程序我不能在一個函數中增加了許多價值

  1. 我把文本轉換成文本BOX1,文字BOX2,............文本box70,然後點擊pushButton

  2. 調用module_b.py中的函數return_text()。現在我可以通過lambda1函數調用一個實例並在class_b中使用它,但當我單擊pushbutton時,我無法調用70個實例。

** A-我想補充lineEdit_1,lineEdit_2 ... .. lineEdit_70到lambda方法main.py

** B-我想在module_b.py編輯(return_text (self, txt))(table2 (self, txt))打印和返回值。 student1student70

任何人都可以幫助我嗎?下面是該代碼:

main.py

# -*- coding: utf-8 -*- 
from PyQt4 import QtCore, QtGui 
import sys 
from GUI import Ui_MainWindow 
class MainWindow(QtGui.QMainWindow,Ui_MainWindow): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 
     from module_b import calss_b 
     global instance_b 
     instance_b=calss_b(self) 
     txt1 = self.ui.lineEdit.text #Method reference not Method call 
     txt2 = self.ui.lineEdit2.text 
     mySlot = lambda : (instance_b.return_text_username(txt1()) 
     QtCore.QObject.connect(self.ui.pushButton,QtCore.SIGNAL("clicked()"),mySlot) 


if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    global myapp 
    myapp = MainWindow() 
    myapp.show() 
    sys.exit(app.exec_()) 

module_b.py

import sys 
from GUI import Ui_MainWindow 
from PyQt4 import QtCore, QtGui 
class calss_b (object): 
    def __init__(self, parent=None): 
     pass 


    def return_text (self, txt): 
    #### global student1, student2 , student3………. Student70 
     student1=unicode(txt) 
     return first_student 
##### …. 
     … 
     return 70 

    def table2 (self, txt): 
     print student1 
     print 2 
##### …. 
     … 
     print 70 
+0

所以你想發送到'return_text'所有文本從70'lineEdit'然後'返回'他們一次嗎? –

+0

你不能僅僅通過一個學生的名單到這個函數嗎? –

+0

是>>>>>>>>>>>> –

回答

1

我所能的事情,最好的辦法是收集所有lineEdit到列表,並將其傳遞給return_text方法則每次迭代調用text()方法,這樣:

number_of_line_Edit = 70 
txt = [getattr(self.ui,'lineEdit{0}'.format(i)) for i in range(1,number_of_line_Edit+1)] #This will collect all lineEdit(s) reference so we can call there methods in return_text method 
mySlot = lambda :instance_b.return_text(txt) 
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), mySlot) 
的種

然後在return_texttable2方法:

def return_text(self, lineEdit_list): 
    my_text_list = [] 
    for t in lineEdit_list: 
     txt = unicode(t.text()) 
     self.table2(txt) 
     my_text_list.append(txt) 
    #print my_text_list for checking purpose 
    return my_text_list 


## I want print password and return it. 
def table2(self, my_txt): 
    print my_txt 

注意my_text_list名單將每次總是被重置爲空列表return_text方法被調用時,它會失去以前的lineEdit(S)的所有文本呼叫。

+0

非常感謝你,精彩的工作 –

+0

很高興爲您服務@AhmadAli –

+0

<<<<<<<你好,你能幫到這裏嗎:http:/ /stackoverflow.com/questions/34640545/how-can-i-get-values-in-different-ranges-of-cells –

相關問題