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()
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()