我不能在一个函数中添加很多值
I can not add many values in one function
我有一个 gui 应用程序
我把文字输入了text box1,text box2,…………text box70,然后点击pushButton
,
函数return_text ()
在module_b.py
中被调用。现在我可以通过lambda1
函数调用一个实例并在class_b
中使用它,但是当我点击pushbutton
时我无法调用70个实例。
**A- 我想将 lineEdit_1 , lineEdit_2 ... lineEdit_70 添加到 main.py
中的 lambda
方法中
**B- 我想编辑 module_b.py
中的 (return_text (self, txt))
和 (table2 (self, txt) )
以打印和 return 中的值。 student1
到 student70
谁能帮帮我?这是它的代码:
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
我能想到的最好的方法是将所有 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)
然后在module_b.py
的return_text
和table2
方法中:
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
请注意,每次调用 return_text
方法时,my_text_list
列表将始终重置为空列表,这将丢失上一次调用的 lineEdit
(s) 的所有文本。
我有一个 gui 应用程序
我把文字输入了text box1,text box2,…………text box70,然后点击
pushButton
,函数
return_text ()
在module_b.py
中被调用。现在我可以通过lambda1
函数调用一个实例并在class_b
中使用它,但是当我点击pushbutton
时我无法调用70个实例。
**A- 我想将 lineEdit_1 , lineEdit_2 ... lineEdit_70 添加到 main.py
lambda
方法中
**B- 我想编辑 module_b.py
中的 (return_text (self, txt))
和 (table2 (self, txt) )
以打印和 return 中的值。 student1
到 student70
谁能帮帮我?这是它的代码:
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
我能想到的最好的方法是将所有 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)
然后在module_b.py
的return_text
和table2
方法中:
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
请注意,每次调用 return_text
方法时,my_text_list
列表将始终重置为空列表,这将丢失上一次调用的 lineEdit
(s) 的所有文本。