2014-11-04 61 views
1

这里是我的code.all工作正常但我想在MainWindow中的标签中显示名称(在登录对话框中输入)。Pyqt:将名称表单登录对话框传递给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_()) 

我想在对话框类传递(从pilotnamelinediet)试点pilotname标签在主窗口class.how办呢?

回答

1

你应该张贴工作示例(请记住,我们没有你的loginDUi_MainWindow做), 无论如何,这应该工作:

Login级修补

1)这个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),这是应该如何主要是这样的:

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_()) 

我没有测试它,以便纠正我,如果有任何错误

编辑一旦你有self.pilot字符串Main_Window您可以将其设置为pilotname这样的标签:

self.ui.pilotname.setText(QtGui.QApplication.translate("MainWindow", self.pilot, None, QtGui.QApplication.UnicodeUTF8)) 

或简单地尝试:self.ui.pilotname.setText(self.pilot)

如果 “pilotname” 是你的UI文件标签的名称。

+0

谢谢,但我如何分配导航名称在mainwindow标签? – 2014-11-04 12:47:59

+0

对不起,我错过了。看看**编辑**在我的回答 – Aleksandar 2014-11-04 13:45:38

+0

我认为你在这行中拼错了标签名称:'self.ui.PioltNameL.setText(str(pilot))' – Aleksandar 2014-11-04 13:50:22