示例#1
0
class MyQWidget(QDialog):

    sig = pyqtSignal()
    MARGIN = 1

    def __init__(self, some, parent=None):

        super(MyQWidget, self).__init__(parent)
        self.some = some
        self.obj = '我是一个对象'
        print('MyQWidget some is:', self.some)
        print('obj id is:', id(self.obj))
        self.setWindowTitle('MySubWindow')

        # TODO: QStyle.SP_ComputerIcon
        # TypeError: unable to convert a Python 'StandardPixmap' object to a C++ 'QIcon' instance
        # 需要对原生icon做一下处理
        # self.icon = QStyle.SP_ComputerIcon
        # self.icon = QStyle.standardIcon(QStyle.StandardPixmap)
        layout = QVBoxLayout()

        self.lineedit = QLineEdit('Input sth here...')
        layout.addWidget(self.lineedit, stretch=1)

        self.btn = QPushButton('确认')
        self.btn2 = QPushButton('返回')
        # TODO: alignment
        # alignment的用法
        # alignment = QtCore.Qt.AlignHCenter
        layout.addWidget((self.btn), 0, Qt.AlignHCenter)
        layout.addWidget((self.btn2), 0, Qt.AlignHCenter)

        self.statusbar = QStatusBar()
        self.statusbar.setAutoFillBackground(True)
        self.statusbar.showMessage('Ready')
        layout.addStretch()
        layout.addWidget(self.statusbar, 0, Qt.AlignBottom)
        # 设置窗口边框的大小
        layout.setContentsMargins(
            QMargins(self.MARGIN, self.MARGIN, self.MARGIN, self.MARGIN))

        self.setLayout(layout)
        print('状态栏的父部件是', self.statusbar.parent())

        self.btn.clicked.connect(self.accept)
        self.btn2.clicked.connect(self.close)
        self.accepted.connect(self.slot_accept)
        # self.rejected.connect(self.slot_reject)

    # 重写closeEvent时要注意。
    # self.close 发射的closeEvent才是正确的类型
    # def closeEvent(self, event: QtGui.QCloseEvent) -> None:
    #     # 我们显示一个消息框,两个按钮:“是”和“不是”。第一个字符串出现在titlebar。
    #     # 第二个字符串消息对话框中显示的文本。第三个参数指定按钮的组合出现在对话框中。
    #     # 最后一个参数是默认按钮,这个是默认的按钮焦点。
    #     print('closeEvent is :')
    #     print(event)
    #     reply = QMessageBox.question(self, 'Message',
    #                                  "Are you sure to quit?", QMessageBox.Yes |
    #                                  QMessageBox.No, QMessageBox.No)
    #     # 处理返回值,如果单击Yes按钮,关闭小部件并终止应用程序。否则我们忽略关闭事件。
    #     if reply == QMessageBox.Yes:
    #         event.accept()
    #     else:
    #         event.ignore()
    #     pass

    def slot_reject(self):
        pass

    def slot_accept(self):
        # self.hide()
        # self.parent.show()
        print('确认按钮被点击 ,close sub window ,show mainwindow')

    def get_session(self):
        sf = SessionFactory()
        s = sf.create_session()
        pass