예제 #1
0
    def save_design(self, _=None):
        """Handles click on save design."""
        if self.design:
            # get file path
            filename = self.design.save_path
            if not filename:
                QMessageBox.warning(
                    self, 'Warning', 'This  will save a .metal.py script '
                    'that needs to be copied into a jupyter notebook to run.'
                    'The "Load" button has not yet been implemented.')

                filename = QFileDialog.getSaveFileName(
                    None,
                    'Select a new location to save Metal design to',
                    self.design.get_design_name() + '.metal.py',
                    selectedFilter='*.metal.py')[0]
                self.design.save_path = filename
            # save python script to file path
            pyscript = self.design.to_python_script()
            with open(filename, 'w') as f:
                f.write(pyscript)

            #make it clear it's saving
            saving_dialog = QDialog(self)
            saving_dialog.setWindowModality(Qt.NonModal)
            v = QVBoxLayout()
            saving_dialog.setLayout(v)
            v.addWidget(QLabel("Saving..."))
            saving_dialog.open()
            saving_dialog.show()
            QTimer.singleShot(200, saving_dialog.close)
        else:
            self.logger.info('No design present.')
            QMessageBox.warning(self, 'Warning', 'No design present! Can'
                                't save')
class MainWindow(QDialog, Ui_Form_name, Ui_message_box):
    def __init__(self):
        super().__init__()
        self.windows = Ui_Form_name()
        self.windows.setupUi(self)
        self.windows.toolButton.clicked.connect(self.file_opener)
        self.windows.toolButton_2.clicked.connect(self.file_destination)
        self.windows.pushButton.clicked.connect(self.converter)
        self.setWindowIcon(QIcon("icons/image.ico"))

    def file_opener(self):
        global file_name
        file_name = QFileDialog.getOpenFileName(None,"Open File",
        "c:\\users\\{}\\desktop".format(getpass.getuser()),"PDF files(*.pdf)")
        self.windows.lineEdit_4.setText(file_name[0].split("/")[-1])

    def file_destination(self):
        global file_destination
        file_destination = QFileDialog.getExistingDirectory(None,"Destination",
        "c:\\users\\{}\\desktop".format(getpass.getuser()))
        self.windows.lineEdit_5.setText(file_destination.split('/')[-1])
    
    def converter(self):
        if self.windows.lineEdit.text() and self.windows.lineEdit_5.text() and self.windows.lineEdit_4.text():
            try:
                date_extracted = tabula.read_pdf("{}".format(file_name[0]),  
                pages='{}'.format(self.windows.lineEdit.text()), lattice=True)
            
                data_frame = DataFrame(date_extracted)
                data_frame.to_excel("{}/{}.xlsx".format(file_destination,file_name[0].split("/")[-1]))

                self.window2 = QDialog()
                self.message_box = Ui_message_box()
                self.message_box.setupUi(self.window2)
                self.window2.setWindowModality(QtCore.Qt.ApplicationModal)
                self.window2.show()
                self.window2.setWindowIcon(QIcon("icons/image.ico"))
                self.message_box.pushButton.clicked.connect(self.close_message)
            except Exception as e:
                print(e)
                self.window4 = QDialog()
                self.message_box3 = Ui_error_message()
                self.message_box3.setupUi(self.window4)
                self.window4.setWindowModality(QtCore.Qt.ApplicationModal)
                self.window4.show()
                self.window4.setWindowIcon(QIcon("image.ico"))
                self.message_box3.pushButton.clicked.connect(self.error_warning)
            
        
        else:
            self.window3 = QDialog()
            self.message_box2 = Ui_invalid_message()
            self.message_box2.setupUi(self.window3)
            self.window3.setWindowModality(QtCore.Qt.ApplicationModal)
            self.window3.show()
            self.window3.setWindowIcon(QIcon("icons/image.ico"))
            self.message_box2.pushButton.clicked.connect(self.invalid_warning)

    def close_message(self):
        webbrowser.open("{}".format(file_destination))
        self.window2.close()
    
    def invalid_warning(self):
        self.window3.close()
    
    def error_warning(self):
        self.window4.close()
예제 #3
0
class Start(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('扫雷')
        self.setWindowIcon(QIcon(':/minesweeper.ico'))
        self.setFixedSize(1000, 700)
        self.setMouseTracking(True)
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.btn = QPushButton(self)
        self.btn.setMouseTracking(True)
        self.btn.setIcon(QIcon(':/开始游戏.png'))
        self.btn.setIconSize(QSize(280, 200))
        self.btn.setStyleSheet('QPushButton{border:None}')
        self.btn.move(350, 370)
        self.btn.clicked.connect(self.show_mode)
        self.msw = MineSweeperWindow(MineSweeper(0, 0, 0))
        self.show()

    def show_mode(self):
        self.choose = QDialog()
        self.choose.setWindowIcon(QIcon(':/minesweeper.ico'))
        self.choose.setFixedSize(300, 300)
        self.close()
        btn1 = QPushButton('简单', self.choose)
        btn1.move(90, 50)
        btn1.clicked.connect(self.set_easy)
        btn2 = QPushButton('中等', self.choose)
        btn2.move(90, 100)
        btn2.clicked.connect(self.set_medium)
        btn3 = QPushButton('困难', self.choose)
        btn3.move(90, 150)
        btn3.clicked.connect(self.set_hard)
        btn4 = QPushButton('自定义', self.choose)
        btn4.move(90, 200)
        btn4.clicked.connect(self.set_free)
        self.choose.setWindowTitle('模式选择')
        self.choose.setWindowModality(Qt.ApplicationModal)
        self.choose.show()

    def paintEvent(self, e):
        painter = QPainter(self)
        background = QPixmap(':/封面2.jpg')
        painter.drawPixmap(self.rect(), background)

    def mouseMoveEvent(self, e):
        if 400 <= e.x() <= 580 and 420 <= e.y() <= 520:
            self.btn.setGeometry(340, 366, 300, 214)
            self.btn.setIconSize(QSize(300, 214))
        else:
            self.btn.setGeometry(350, 370, 280, 200)
            self.btn.setIconSize(QSize(280, 200))

    def set_easy(self):
        self.choose.close()
        self.msw = MineSweeperWindow(EasyMode())
        self.msw.show()

    def set_medium(self):
        self.choose.close()
        self.msw = MineSweeperWindow(MediumMode())
        self.msw.show()

    def set_hard(self):
        self.choose.close()
        self.msw = MineSweeperWindow(HardMode())
        self.msw.show()

    def set_free(self):
        self.sf = SetFree()
        self.choose.close()
        self.sf.show()