如何从 main class 调用一个或多个 GUI 对象
How do I call an GUI object or more from main class
我有一个 gui 应用程序
- 我在文本框1、文本框2中输入文字,然后点击
pushButton
、
- 函数
return_text_username ()
在moduel_b.py
中被调用。
现在我可以通过lambda1
函数调用一个实例并在class_b
中使用它,但是当我点击pushbutton
时我不能调用两个实例。
**A- 我想在 main.py
中将 lineEdit_2
添加到 lambda 方法中,或者将 instance_lambda2_password
添加到 connect
方法中。
**B- 我想在 moduel_b.py
中编辑 return_printtext_password (self, txt)
以打印和 return 密码。
谁能帮帮我?
这是代码:
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)
instance_lambda1_username=lambda: instance_b.return_text_username(self.ui.lineEdit.text())##I want to add lineEdit_2
instance_lambda2_password=lambda: instance_b.printtext2(self.ui.lineEdit_2.text())
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), \
instance_lambda1_username)## Or add instance_lambda2_password here.
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_username (self, txt):
username=unicode(txt)
print username
return username
## I want print password and return it.
def return_printtext_password (self, txt):
password=unicode(txt)
print password
return password
您不需要为每个 slot
定义 lambda
函数,而是将它们组合成一个并将其传递给您的 connect
方法,这样:
txt1 = self.ui.lineEdit.text #Method reference not Method call
txt2 = self.ui.lineEdit2.text
mySlot = lambda : (instance_b.return_text_username(txt1()), instance_b.return_printtext_password(txt2()))# Passed to lambda method call this time
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), mySlot)
至于Point-B,我想你已经做到了,
def return_text_username (self, txt):
username=unicode(txt)
print username
return username
我有一个 gui 应用程序
- 我在文本框1、文本框2中输入文字,然后点击
pushButton
、 - 函数
return_text_username ()
在moduel_b.py
中被调用。 现在我可以通过lambda1
函数调用一个实例并在class_b
中使用它,但是当我点击pushbutton
时我不能调用两个实例。
**A- 我想在 main.py
中将 lineEdit_2
添加到 lambda 方法中,或者将 instance_lambda2_password
添加到 connect
方法中。
**B- 我想在 moduel_b.py
中编辑 return_printtext_password (self, txt)
以打印和 return 密码。
谁能帮帮我? 这是代码:
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)
instance_lambda1_username=lambda: instance_b.return_text_username(self.ui.lineEdit.text())##I want to add lineEdit_2
instance_lambda2_password=lambda: instance_b.printtext2(self.ui.lineEdit_2.text())
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), \
instance_lambda1_username)## Or add instance_lambda2_password here.
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_username (self, txt):
username=unicode(txt)
print username
return username
## I want print password and return it.
def return_printtext_password (self, txt):
password=unicode(txt)
print password
return password
您不需要为每个 slot
定义 lambda
函数,而是将它们组合成一个并将其传递给您的 connect
方法,这样:
txt1 = self.ui.lineEdit.text #Method reference not Method call
txt2 = self.ui.lineEdit2.text
mySlot = lambda : (instance_b.return_text_username(txt1()), instance_b.return_printtext_password(txt2()))# Passed to lambda method call this time
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), mySlot)
至于Point-B,我想你已经做到了,
def return_text_username (self, txt):
username=unicode(txt)
print username
return username