这是我的代码。一切都很好。但我想在MainWindow的标签中显示一个名称(在登录对话框中输入)。
import sys
from PyQt4 import QtGui,QtCore
from loginD import *
from mainwindow import Ui_MainWindow
class Login(QtGui.QDialog):
def __init__(self,parent=None):
QtGui.QDialog.__init__(self,parent)
self.ui=Ui_LoginD()
self.ui.setupUi(self)
self.ui.PasswordLE.setEchoMode(QtGui.QLineEdit.Password)
pilot=str(self.ui.PilotNameLE.text())
QtCore.QObject.connect(self.ui.LoginPB,QtCore.SIGNAL('clicked()'),
self.HandleLogin)
def HandleLogin(self):
if self.ui.PasswordLE.text()=="a":
self.accept()
else:
QtGui.QMessageBox.warning(
self,'Error;','bad')
class Main_Window(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self,parent)
self.ui=Ui_MainWindow()
self.ui.setupUi(self)
self.ui.PioltNameL.setText(str(pilot) )
if __name__=='__main__':
app=QtGui.QApplication(sys.argv)
if Login().exec_()==QtGui.QDialog.Accepted:
window=Main_Window()
window.show()
sys.exit(app.exec_())
我想把对话框类中的pilot(从pilotnamelinediet)传递到MainWindow类中的pilotname标签。怎么做?
您应该发布工作示例(请记住,我们没有您的loginD
和Ui_MainWindow
),无论如何,这应该起作用:
1)在Login
类中将此pilot=str(self.ui.PilotNameLE.text())
修复为self.pilot=str(self.ui.PilotNameLE.text())
并添加方法:
def GetPilot(self):
return self.pilot
2)在Main_Window
类中将__init__
行更改为:
def __init__(self, pilot, parent=None):
3),这就是main的样子:
if __name__=='__main__':
app=QtGui.QApplication(sys.argv)
loginDialog = Login()
if loginDialog.exec_()==QtGui.QDialog.Accepted:
window=Main_Window(loginDialog.GetPilot())# pass pilot from login to mainwindow
window.show()
sys.exit(app.exec_())
我没有测试它,所以如果有任何错误,请纠正我
EDIT一旦Main_Window
中有self.pilot
字符串,就可以将其设置为pilotname
标签,如下所示:
self.ui.pilotname.setText(QtGui.QApplication.translate("MainWindow", self.pilot, None, QtGui.QApplication.UnicodeUTF8))
或者简单地尝试使用:self.ui.pilotname.setText(self.pilot)
如果"pilotname"是ui文件中标签的名称。