2014-11-04 50 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