скрыть кадр через 3 секунды / с помощью вызова функции (необходимо выполнить в обоих направлениях) - PullRequest
0 голосов
/ 10 октября 2018

Я создаю 2 кадра в одном окне с некоторыми атрибутами в нем.теперь я могу вызвать его отдельно или отображать оба значения

from PyQt4 import QtCore, QtGui
import time
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Dialog(object):
    def frame1(self,Dialog):
        self.frame = QtGui.QFrame(Dialog)
        self.frame.setGeometry(QtCore.QRect(40, 20, 311, 391))
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName(_fromUtf8("frame"))
        self.label = QtGui.QLabel(self.frame)
        self.label.setGeometry(QtCore.QRect(120, 180, 72, 23))
        self.label.setObjectName(_fromUtf8("label"))
        self.label.setText(_translate("Dialog", "omniOS", None))

    def frame2(self,Dialog):
        self.frame_2 = QtGui.QFrame(Dialog)
        self.frame_2.setGeometry(QtCore.QRect(30, 30, 311, 391))
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setObjectName(_fromUtf8("frame_2"))
        self.label_2 = QtGui.QLabel(self.frame_2)
        self.label_2.setGeometry(QtCore.QRect(50, 230, 72, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.lineEdit = QtGui.QLineEdit(self.frame_2)
        self.lineEdit.setGeometry(QtCore.QRect(150, 230, 113, 33))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.label_2.setText(_translate("Dialog", "Login", None))


    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(391, 437)
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "OmniOS", None))
        self.frame1(Dialog)
        self.frame2(Dialog)

if __name__=="__main__":
    ui=Ui_Dialog()
    import sys
    a = QtGui.QApplication(sys.argv)
    w = QtGui.QWidget()
    ui.setupUi(w)
    w.show()

    sys.exit(a.exec_())

. Мне нужно получить первое окно через 3 секунды. Мне нужно получить второе окно + скрыть первое.не перекрывая его

 self.frame1(Dialog) # call this when the program start
 self.frame2(Dialog) # call this after 3 second self.frame1(Dialog) 

Любая помощь будет принята с благодарностью ThankYou

1 Ответ

0 голосов
/ 10 октября 2018

То, что код работает, не означает, что он правильный, например, я вижу, что вы скомбинировали 2 кода, сгенерированных Qt Designer, и, очевидно, они будут перекрываться, правильная вещь - иметь 2 окна, которые заменяются, как показанониже с использованием QTimer.

from PyQt4 import QtCore, QtGui
import time
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Dialog1(object):
    def setupUi(self, Dialog):
        self.frame = QtGui.QFrame(Dialog)
        self.frame.setGeometry(QtCore.QRect(40, 20, 311, 391))
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName(_fromUtf8("frame"))
        self.label = QtGui.QLabel(self.frame)
        self.label.setGeometry(QtCore.QRect(120, 180, 72, 23))
        self.label.setObjectName(_fromUtf8("label"))
        self.label.setText(_translate("Dialog", "omniOS", None))
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(391, 437)
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "OmniOS", None))


class Ui_Dialog2(object):
    def setupUi(self, Dialog):
        self.frame_2 = QtGui.QFrame(Dialog)
        self.frame_2.setGeometry(QtCore.QRect(30, 30, 311, 391))
        self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
        self.frame_2.setObjectName(_fromUtf8("frame_2"))
        self.label_2 = QtGui.QLabel(self.frame_2)
        self.label_2.setGeometry(QtCore.QRect(50, 230, 72, 31))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.lineEdit = QtGui.QLineEdit(self.frame_2)
        self.lineEdit.setGeometry(QtCore.QRect(150, 230, 113, 33))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
        self.label_2.setText(_translate("Dialog", "Login", None))
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(391, 437)
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
        self.retranslateUi(Dialog)

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Dialog", "OmniOS", None))


class Dialog1(QtGui.QDialog, Ui_Dialog1):
    def __init__(self, parent=None):
        super(Dialog1, self).__init__(parent)
        self.setupUi(self)


class Dialog2(QtGui.QDialog, Ui_Dialog2):
    def __init__(self, parent=None):
        super(Dialog2, self).__init__(parent)
        self.setupUi(self)



if __name__=="__main__":
    import sys
    a = QtGui.QApplication(sys.argv)
    w1 = Dialog1()
    w2 = Dialog2()

    def on_timeout():
        w1.hide()
        w2.show()

    w1.show()
    QtCore.QTimer.singleShot(3000, on_timeout)
    sys.exit(a.exec_())
...