这是我的code.all工作正常。但我想在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 class.how中的pilotname标签来执行此操作吗?
答案 0 :(得分:1)
您应该发布工作示例(请注意,我们没有您的loginD
和Ui_MainWindow
),
无论如何,这应该工作:
Login
课程中的 1)将此pilot=str(self.ui.PilotNameLE.text())
修复为self.pilot=str(self.ui.PilotNameLE.text())
并添加方法:
def GetPilot(self):
return self.pilot
Main_Window
班级中的 2)将__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文件中的标签名称。