pyqt 两个窗口传值问题

amgod 2015-09-03 10:19:24
背景描述:
A窗口中存在一个IP输入框lineEdit,一个提交按钮pushbutton,点击提交按钮则打开B窗口,并传递输入的ip_add地址字符串给B窗口。
B窗口代码中包含登陆数据库语句。

预期目标:
接收A窗口提交过来的ip_add变量,进行登陆数据库,打印登陆是否成功的提示。

存在问题:
目前是点击提交按钮,可以成功打开B窗口,但不知道怎么将变量值(ip_add)传递给第二个窗口。
本人是新手,请大家帮忙看看,有什么办法进行处理?

附:
A窗口基本处理语句:

# A.py
# -*- coding: utf-8 -*-

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Ui_1 import Ui_Form
import B
class Form(QWidget, Ui_Form):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.setupUi(self)
def on_pushButton_clicked(self):
global ip_add
self.w2=B.Dialog()
ip_add=self.lineEdit.text()
self.w2.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
myapp = Form()
myapp.show()
sys.exit(app.exec_())

B窗口基本处理语句:

# B.py
# -*- coding: utf-8 -*-

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Ui_2 import Ui_Dialog
import A

class Dialog(QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(Dialog, self).__init__(parent)
self.setupUi(self)
conn = pymssql.connect(host=host_ip, database='db_name', user='db_user', password='db_pw')
.........#其他处理部分

if __name__ == "__main__":
app = QApplication(sys.argv)
myapp = Dialog()
myapp.show()
sys.exit(app.exec_())

...全文
914 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
amgod 2015-09-07
  • 打赏
  • 举报
回复 2
引用 1 楼 panghuhu250的回复:
1. Dialog类加一个ip参数, 如果以后还要用到的话, 把它保存起来

# B.py
# -*- coding: utf-8 -*-
 
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Ui_2 import Ui_Dialog
 
class Dialog(QDialog, Ui_Dialog):
    def __init__(self, ip, parent=None):
        super(Dialog, self).__init__(parent)
        self.setupUi(self)
        self.ip_address = ip #如果以后用不到ip, 这一句也不需要
        conn = pymssql.connect(host=ip, database='db_name', user='db_user', password='db_pw')
        .........#其他处理部分
...
2. 创建w2时, 传递ip的值


# A.py
# -*- coding: utf-8 -*-
 
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Ui_1 import Ui_Form
import B
class Form(QWidget, Ui_Form):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.setupUi(self)
    def on_pushButton_clicked(self):
        ip_add=self.lineEdit.text()
        self.w2=B.Dialog(ip_add)
        self.w2.show()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myapp = Form()
    myapp.show()
    sys.exit(app.exec_())
按照你提的方法可成功传递,多谢。
weixin_44877223 2021-07-08
  • 举报
回复
@amgod 这个方法确实不错,找了半天终于得到解答
panghuhu250 2015-09-05
  • 打赏
  • 举报
回复
1. Dialog类加一个ip参数, 如果以后还要用到的话, 把它保存起来

# B.py
# -*- coding: utf-8 -*-
 
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Ui_2 import Ui_Dialog
 
class Dialog(QDialog, Ui_Dialog):
    def __init__(self, ip, parent=None):
        super(Dialog, self).__init__(parent)
        self.setupUi(self)
        self.ip_address = ip #如果以后用不到ip, 这一句也不需要
        conn = pymssql.connect(host=ip, database='db_name', user='db_user', password='db_pw')
        .........#其他处理部分
...
2. 创建w2时, 传递ip的值


# A.py
# -*- coding: utf-8 -*-
 
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Ui_1 import Ui_Form
import B
class Form(QWidget, Ui_Form):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.setupUi(self)
    def on_pushButton_clicked(self):
        ip_add=self.lineEdit.text()
        self.w2=B.Dialog(ip_add)
        self.w2.show()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myapp = Form()
    myapp.show()
    sys.exit(app.exec_())

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧