pyqt5 两个窗体传值不显示窗口2

新手上路,请多包涵

1.利用pyqt5,调用sqlserver,在登陆窗口和主窗口之间传递参数:账户id,出现传参成功,但是窗口2【tab_com.py】没有跳出,并且该窗口中,用到传递进去的参数的,那个表 那一部分也没有运行

2.附代码如下:

#登录窗口 dl.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'dl.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon
import sys

from tab_com import Ui_main


class Ui_dialog(object):
    def setupUi(self,dialog):
        dialog.setObjectName("dialog")
        dialog.setWindowIcon(QIcon('D:\\书.jpg'))
        dialog.resize(400, 300)
        dialog.setStyleSheet("background-image:url(D:/竹简2.jpg)")
        self.widget = QtWidgets.QWidget(dialog)
        
        self.widget.setGeometry(QtCore.QRect(60, 40, 284, 211))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        
        self.yhid = QtWidgets.QLabel(self.widget)
        self.yhid.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
        self.yhid.setObjectName("yhid")
        self.horizontalLayout.addWidget(self.yhid)
        
        self.yhidte = QtWidgets.QLineEdit(self.widget)
        self.yhidte.setEchoMode(QtWidgets.QLineEdit.Normal)
        self.yhidte.setObjectName("yhidte")
        self.horizontalLayout.addWidget(self.yhidte)
        
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        
        self.secre = QtWidgets.QLabel(self.widget)
        self.secre.setObjectName("secre")
        self.horizontalLayout_2.addWidget(self.secre)
        
        self.secrete = QtWidgets.QLineEdit(self.widget)
        self.secrete.setEchoMode(QtWidgets.QLineEdit.Password)
        self.secrete.setObjectName("secrete")
        self.horizontalLayout_2.addWidget(self.secrete)
        
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        
        self.remorno = QtWidgets.QCheckBox(self.widget)
        self.remorno.setObjectName("remorno")
        self.verticalLayout.addWidget(self.remorno)
        
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        
        self.cance = QtWidgets.QPushButton(self.widget)
        self.cance.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
        self.cance.setObjectName("cance")
        self.horizontalLayout_3.addWidget(self.cance)
        
        spacerItem = QtWidgets.QSpacerItem(118, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        
        self.sure = QtWidgets.QPushButton(self.widget)
        self.sure.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
        self.sure.setObjectName("sure")
        self.horizontalLayout_3.addWidget(self.sure)
        self.verticalLayout.addLayout(self.horizontalLayout_3)

        self.zhuce = QtWidgets.QPushButton(self.widget)
        self.zhuce.setGeometry(QtCore.QRect(50, 260, 282, 23))
        self.horizontalLayout_3.addWidget(self.zhuce)
        self.zhuce.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
        self.zhuce.setObjectName("zhuce")

        self.retranslateUi(dialog)
        self.sure.clicked.connect(dialog.accept)
        self.cance.clicked.connect(dialog.accept)
        self.zhuce.clicked.connect(dialog.accept)
        
        QtCore.QMetaObject.connectSlotsByName(dialog)
        
        dialog.setTabOrder(self.yhidte, self.secrete)
        dialog.setTabOrder(self.secrete, self.remorno)
        dialog.setTabOrder(self.remorno, self.cance)
        dialog.setTabOrder(self.cance, self.sure)


        self.B = Ui_main()

    #def retry(self):
        
        #th = self.yhidte.text()

                
        #widget=QtWidgets.QWidget()
        #if th:
           #print('jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj' + th)
            
           #self.B.setupUi(widget,th)
           #if not self.mBWidget.isVisible():
               #self.B.show()

    def retranslateUi(self, dialog):
        _translate = QtCore.QCoreApplication.translate
        dialog.setWindowTitle(_translate("dialog", "登陆"))
        self.yhid.setText(_translate("dialog", "用户id       "))
        self.secre.setText(_translate("dialog", "密码         "))
        self.remorno.setText(_translate("dialog", "是否记住密码"))
        self.cance.setText(_translate("dialog", "取消"))
        self.sure.setText(_translate("dialog", "确认"))
        self.zhuce.setText(_translate("dialog", "无账号?注册…"))#

#if __name__ == "__main__":

#import sys
    
#app = QtWidgets.QApplication(sys.argv)
#widget=QtWidgets.QDialog()

#ui = Ui_dialog()
#ui.setupUi(widget)
#widget.show()

#ui.sure.clicked.connect(ui.retry)

#sys.exit(app.exec_())

#主界面窗口 tab_com.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'tab.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

import pymssql
from PyQt5.QtCore import *
from PyQt5 import QtWidgets,QtGui
from PyQt5.QtWidgets import *

class Ui_main(object):

    def setIP(self,*x):
        self.setupUi(x)
        
    def setupUi(self, Dialog,*x):        
        Dialog.setObjectName("Dialog")
        Dialog.setWindowIcon(QtGui.QIcon('D:\\书.jpg'))
        Dialog.resize(521, 520)

        self.tabWidget = QtWidgets.QTabWidget(Dialog)
        self.tabWidget.setGeometry(QtCore.QRect(0, 0, 531, 501))
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        
        self.tableWidget = QtWidgets.QTableWidget(self.tab)
        self.tableWidget.setGeometry(QtCore.QRect(-5, -9, 521, 341))
        self.tableWidget.setObjectName("tableWidget")#书城表

     
        conn = pymssql.connect(host = '(local)\SQLEXPRESS',database = 'yaoyi_10121',user = 'sa',password = '12345',charset="utf8")
        cur=conn.cursor()
        cur.execute('select * from book_inform_10121')
        rows=cur.fetchall()
        print('ppppppppppppppppppppppppppppppppppppppppppppppppppppppp' + rows[0][0])


        row=cur.rowcount  #取得记录个数,用于设置表格的行数
        print(row)
        vol=len(rows[0])  #取得字段数,用于设置表格的列数
        print(vol)
        cur.close()
        conn.close()
        
        self.tableWidget.setRowCount(row)
        self.tableWidget.setColumnCount(vol)
        
        for i in range(row):
            for j in range(vol):
                temp_data=rows[i][j]  #临时记录,不能直接插入表格
                print(temp_data)
                data=QtWidgets.QTableWidgetItem(str(temp_data)) #转换后可插入表格
                
                self.tableWidget.setItem(i,j,data)
        #self.show()


        self.pushButton = QtWidgets.QPushButton(self.tab)
        self.pushButton.setGeometry(QtCore.QRect(50, 380, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.tab)
        self.pushButton_2.setGeometry(QtCore.QRect(380, 380, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.tabWidget.addTab(self.tab, "")

        
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.tab_2)
        self.pushButton_3.setGeometry(QtCore.QRect(70, 230, 75, 23))
        self.pushButton_3.setObjectName("pushButton_3")
        self.label = QtWidgets.QLabel(self.tab_2)
        self.label.setGeometry(QtCore.QRect(50, 40, 54, 12))
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(self.tab_2)
        self.lineEdit.setGeometry(QtCore.QRect(130, 40, 113, 20))
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.tab_2)
        self.lineEdit_2.setGeometry(QtCore.QRect(130, 90, 113, 20))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.label_2 = QtWidgets.QLabel(self.tab_2)
        self.label_2.setGeometry(QtCore.QRect(50, 90, 54, 12))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.tab_2)
        self.label_3.setGeometry(QtCore.QRect(50, 150, 54, 12))
        self.label_3.setObjectName("label_3")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.tab_2)
        self.lineEdit_3.setGeometry(QtCore.QRect(130, 140, 113, 20))
        
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.tab_2)
        self.pushButton_4.setGeometry(QtCore.QRect(320, 230, 75, 23))
        
        self.pushButton_4.setObjectName("pushButton_4")
        self.tabWidget.addTab(self.tab_2, "")

        
        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.pushButton_5 = QtWidgets.QPushButton(self.tab_3)
        self.pushButton_5.setGeometry(QtCore.QRect(0, 0, 75, 23))
        self.pushButton_5.setStyleSheet("background-color: rgba(255, 255, 255, 0);\n"
"color: rgb(255, 24, 93);")
        self.pushButton_5.setObjectName("pushButton_5")
        
        self.pushButton_6 = QtWidgets.QPushButton(self.tab_3)
        self.pushButton_6.setGeometry(QtCore.QRect(90, 0, 75, 23))
        self.pushButton_6.setStyleSheet("color: rgb(255, 14, 58);\n"
"background-color: rgba(255, 255, 255, 0);")
        self.pushButton_6.setObjectName("pushButton_6")
        
        self.tableWidget_2 = QtWidgets.QTableWidget(self.tab_3)
        self.tableWidget_2.setGeometry(QtCore.QRect(5, 31, 511, 401))
        self.tableWidget_2.setStyleSheet("color: rgb(255, 19, 70);")
        self.tableWidget_2.setGridStyle(QtCore.Qt.SolidLine)
        self.tableWidget_2.setObjectName("tableWidget_2")#个人信息表


        conn = pymssql.connect(host = '(local)\SQLEXPRESS',database = 'yaoyi_10121',user = 'sa',password = '12345',charset="utf8")
        cur=conn.cursor()

        try:
            ii = x[0]

        except IndexError:
            pass
        
        else:

            cur.execute('select * from user_inform_10121 where u_id=%s' % x[0])
            rows=cur.fetchall()
            print('sssssssssssssssssssssssss' + rows[0][0])

            row=cur.rowcount  #取得记录个数,用于设置表格的行数
            print(row)
            vol=len(rows[0])  #取得字段数,用于设置表格的列数
            print(vol)
            cur.close()
            conn.close()
        
            self.tableWidget_2.setRowCount(row)
            self.tableWidget_2.setColumnCount(vol)
        
            for i in range(row):
                for j in range(vol):
                    temp_data=rows[i][j]  #临时记录,不能直接插入表格
                    print(temp_data)
                    data=QtWidgets.QTableWidgetItem(str(temp_data)) #转换后可插入表格
                
                    self.tableWidget_2.setItem(i,j,data)
        #self.show()


        

        self.tabWidget.addTab(self.tab_3, "")

        self.retranslateUi(Dialog)
        self.tabWidget.setCurrentIndex(2)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        
        
        __sortingEnabled = self.tableWidget.isSortingEnabled()
        self.tableWidget.setSortingEnabled(False)
               
        self.tableWidget.setSortingEnabled(__sortingEnabled)
        self.pushButton.setText(_translate("Dialog", "这是按钮"))
        self.pushButton_2.setText(_translate("Dialog", "按钮2"))
     
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("Dialog", "书城"))

        self.pushButton_3.setText(_translate("Dialog", "清除"))
        self.label.setText(_translate("Dialog", "书名"))
        self.label_2.setText(_translate("Dialog", "作者"))
        self.label_3.setText(_translate("Dialog", "价格"))
        self.pushButton_4.setText(_translate("Dialog", "确认"))



        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("Dialog", "我的推荐"))

        self.pushButton_5.setText(_translate("Dialog", "个人信息"))
        self.pushButton_6.setText(_translate("Dialog", "历史记录"))
        
        __sortingEnabled = self.tableWidget_2.isSortingEnabled()
        self.tableWidget_2.setSortingEnabled(False)
        
        self.tableWidget_2.setSortingEnabled(__sortingEnabled)
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("Dialog", "我的账户"))


#import sys
#app = QtWidgets.QApplication(sys.argv)
#widget=QtWidgets.QDialog()
#ui = Ui_main()
#ui.setupUi(widget)
#widget.show()

#ui.sure.clicked.connect(ui.retry)
#sys.exit(app.exec_())

#显示 :

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QDialog

from dl import Ui_dialog
from tab_com import Ui_main

from PyQt5.QtCore import *#
from PyQt5.QtWidgets import *#
import pymssql
import requests
import re

class tryth(QDialog,QWidget,Ui_dialog):
    
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.sure.clicked.connect(self.retry)
        #self.show()

    def retry(self):
        
        th = self.yhidte.text()
        print('fukkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk' + th)
                
        widget=QtWidgets.QWidget()
        #print(str(widget))
        try:
            oo = th
        except:
            print('jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj' + th)
            
            self.B.setupUi(widget,th)
            if not self.B.isVisible():
               self.B.show()##############

app = QApplication(sys.argv)
wy = tryth()
wy.show()
app.exec_()

pyqt 初学者,已经折腾两天了,问题是把retry函数丢到dl.py里就明显运行了用到传入的参数部分,但是还是不显示窗口2【tab_com】,还请指教!

阅读 5.2k
2 个回答

子窗口的话,不要用show, 阻塞用exec_, 不阻塞用open。

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题