Ejemplo n.º 1
0
class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(720, 400)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        # 画板
        self.board = PaintBoard(self.centralwidget)
        self.board.setEnabled(True)
        self.board.setGeometry(QtCore.QRect(200, 10, 500, 360))

        self.board.setObjectName("widget")

        # UI初始化
        # 连接状态提示
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(10, 30, 170, 30))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.lineEdit.setFont(font)
        self.lineEdit.setReadOnly(True)

        # 缩放比例调整
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(20, 110, 81, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.lineEdit.setObjectName("lineEdit")
        self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.doubleSpinBox.setGeometry(QtCore.QRect(110, 110, 62, 22))
        self.doubleSpinBox.setMinimum(10.0)
        self.doubleSpinBox.setMaximum(90.0)
        self.doubleSpinBox.setProperty("value", 50.0)
        self.doubleSpinBox.setObjectName("doubleSpinBox")
        self.doubleSpinBox.valueChanged.connect(self.changerate)

        # # 纵坐标调整
        # self.label = QtWidgets.QLabel(self.centralwidget)
        # self.label.setGeometry(QtCore.QRect(20, 90, 81, 21))
        # font = QtGui.QFont()
        # font.setPointSize(12)
        # self.label.setFont(font)
        # self.label.setObjectName("label")
        # self.lineEdit.setObjectName("lineEdit")
        # self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)
        # self.doubleSpinBox.setGeometry(QtCore.QRect(110, 90, 62, 22))
        # self.doubleSpinBox.setMinimum(16.0)
        # self.doubleSpinBox.setProperty("value", 32.0)
        # self.doubleSpinBox.setObjectName("doubleSpinBox")
        #
        # # 横坐标调整
        # self.label_2 = QtWidgets.QLabel(self.centralwidget)
        # self.label_2.setGeometry(QtCore.QRect(20, 130, 81, 21))
        # font = QtGui.QFont()
        # font.setPointSize(12)
        # self.label_2.setFont(font)
        # self.label_2.setObjectName("label_2")
        # self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(self.centralwidget)
        # self.doubleSpinBox_2.setGeometry(QtCore.QRect(110, 130, 62, 22))
        # self.doubleSpinBox_2.setMinimum(50.0)
        # self.doubleSpinBox_2.setMaximum(99.0)
        # self.doubleSpinBox_2.setObjectName("doubleSpinBox_2")

        # 峰峰值标签
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(20, 190, 81, 31))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(110, 200, 71, 16))
        self.label_4.setObjectName("label_4")

        # 频率标签
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(20, 220, 81, 31))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(110, 230, 71, 16))
        self.label_6.setObjectName("label_6")

        # 控制按钮
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(30, 300, 140, 50))
        font = QtGui.QFont()
        font.setPointSize(22)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.running = False
        self.pushButton.clicked.connect(self.switch)

        # 菜单
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 718, 23))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")

        # 二级菜单标签
        # 选择串口标签
        self.menu_2 = QtWidgets.QMenu(self.menu)
        self.menu_2.setObjectName("menu_2")
        MainWindow.setMenuBar(self.menubar)

        # 选择串口
        self.actionCOM1 = QtWidgets.QAction(MainWindow)
        self.actionCOM1.setObjectName("actionCOM1")
        self.actionCOM1.triggered.connect(lambda: self.selectCOM(0))
        self.actionCOM2 = QtWidgets.QAction(MainWindow)
        self.actionCOM2.setObjectName("actionCOM2")
        self.actionCOM2.triggered.connect(lambda: self.selectCOM(1))
        self.actionCOM3 = QtWidgets.QAction(MainWindow)
        self.actionCOM3.setObjectName("actionCOM3")
        self.actionCOM3.triggered.connect(lambda: self.selectCOM(2))
        self.menu_2.addAction(self.actionCOM1)
        self.menu_2.addAction(self.actionCOM2)
        self.menu_2.addAction(self.actionCOM3)
        self.menu.addAction(self.menu_2.menuAction())
        self.menubar.addAction(self.menu.menuAction())



        # 定时器接收数据
        self.pretime = time()
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.data_receive)

        self.retranslateUi(MainWindow)
        self.initdata()
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):

        # 文字初始化
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "FPGA_Display"))
        self.lineEdit.setText(_translate("MainWindow", "端口未选择"))
        self.label.setText(_translate("MainWindow", "缩放比例"))
        # self.label.setText(_translate("MainWindow", "纵坐标大小"))
        # self.label_2.setText(_translate("MainWindow", "横坐标大小"))
        self.label_3.setText(_translate("MainWindow", "峰峰值:"))
        self.label_4.setText(_translate("MainWindow", "0"))
        self.label_5.setText(_translate("MainWindow", "  频率:"))
        self.label_6.setText(_translate("MainWindow", "0"))
        self.pushButton.setText(_translate("MainWindow", "开始"))
        self.menu.setTitle(_translate("MainWindow", "菜单"))
        self.menu_2.setTitle(_translate("MainWindow", "选择端口"))
        self.actionCOM1.setText(_translate("MainWindow", "COM1"))
        self.actionCOM2.setText(_translate("MainWindow", "COM2"))
        self.actionCOM3.setText(_translate("MainWindow", "COM3"))

    def initdata(self):
        # 初始化串行端口
        # self.currentCOM=0
        # self.COMs=[serial.Serial("COM3",9600,timeout=0.5) for i in range(1,3)]
        # 获取可用的端口
        port_list = list(serial.tools.list_ports.comports())
        self.port_num = len(port_list)
        for i in port_list:
            print(i.device)
        self.currentCOM_index = -1
        self.currentCOM = None
        self.COMs = []

        if self.port_num == 0:
            print("没有可用端口")
            self.pushButton.setEnabled(False)
            self.actionCOM1.setEnabled(False)
            self.actionCOM2.setEnabled(False)
            self.actionCOM3.setEnabled(False)
        else:
            # 有可用的端口
            # 初始化缓存区,缓冲区定义为MAXBUFF字节
            self.MAXBUFF=100
            self.databuff = []
            self.buffremain = self.MAXBUFF

            # 初始化端口
            self.lineEdit.setText("端口COM1已打开")
            self.currentCOM_index = 0
            self.COMs = [Serial(port=seri.device, baudrate=9600,
                                       timeout=0.5,parity=PARITY_NONE,
                                       stopbits = STOPBITS_ONE,bytesize=SEVENBITS)
                         for seri in port_list]
            self.currentCOM = self.COMs[0]

            if self.port_num == 1:
                self.actionCOM2.setEnabled(False)
                self.actionCOM3.setEnabled(False)
            elif self.port_num == 2:
                self.actionCOM3.setEnabled(False)

    # 改变缩放比例
    def changerate(self):
        self.MAXBUFF = int(self.doubleSpinBox.value()*2)
        # self.buffremain = self.MAXBUFF
        # self.databuff = []

    # 打开串口
    def port_open(self):
        # self.currentCOM.port = self.s1__box_2.currentText()
        # self.currentCOM.baudrate = int(self.s1__box_3.currentText())
        # self.currentCOM.bytesize = int(self.s1__box_4.currentText())
        # self.currentCOM.stopbits = int(self.s1__box_6.currentText())
        # self.currentCOM.parity = self.s1__box_5.currentText()
        # self.currentCOM.baudrate=9600
        # self.currentCOM.bytesize=8
        # self.currentCOM.stopbits=1
        # self.currentCOM.parity="N"


        try:
            self.currentCOM.open()
        except (Exception, BaseException) as e:
            print(e)
            print( "Port Error", "此串口不能被打开!")

        # 打开串口接收定时器,周期为2ms
        self.timer.start(10)

        return self.currentCOM.isOpen()

    # 关闭串口
    def port_close(self):
        self.timer.stop()
        try:
            self.currentCOM.close()
        except:
            pass
        return not self.currentCOM.isOpen()

    # 在菜单中选择端口
    def selectCOM(self, n):
        self.currentCOM_index = n if (n < self.port_num) else 0
        self.currentCOM = self.COMs[n]
        self.lineEdit.setText("端口COM%d已打开" % (n + 1))
        print("OK", n)

    # 运行/停止运行按钮
    def switch(self):
        # 尝试进行切换
        result=False
        if self.running:
            result=self.port_close()
        else:
            result=self.port_open()

        # 根据切换结果进行设置
        if result:
            self.running = not self.running
            if self.running:
                self.pushButton.setText("暂停")
            else:
                self.pushButton.setText("开始")
        else:
            print("false")

    # 接收数据
    def data_receive(self):
        try:
            # 获取缓存区中的个数
            num = self.currentCOM.inWaiting()
            num = num if num < self.buffremain else self.buffremain
        except (Exception, BaseException) as e:
            print(e)
            exit(-1)
        if num > 0:
            data = self.currentCOM.read(num)
            num = len(data)
            print(data)


            # 统计接收字符的数量
            self.buffremain -= num
            # 添加数据到缓冲区中
            self.databuff.extend(data)
        else:
            pass

        if self.buffremain <= 0:
            self.refresh()

    # 缓冲区满,触发刷新
    def refresh(self):
        fre=0
        mid = (max(self.databuff)+min(self.databuff))/2
        now = time()
        perid = now-self.pretime
        self.pretime = time()

        # 计算频率
        for i in range(len(self.databuff)-2):
            if (self.databuff[i]-mid)*(self.databuff[i+2]-mid)<0:
                fre+=1

        # 计算峰峰值
        vvp=max(self.databuff)-min(self.databuff)
        self.label_4.setText(str(vvp))
        self.label_6.setText(str(round(fre/2/perid,2)))

        self.board.draw_wave(self.databuff)
        self.buffremain = self.MAXBUFF
        self.databuff = []
        print("=================refresh!!!!================")
Ejemplo n.º 2
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(720, 400)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        # 画板
        self.board = PaintBoard(self.centralwidget)
        self.board.setEnabled(True)
        self.board.setGeometry(QtCore.QRect(200, 10, 500, 360))

        self.board.setObjectName("widget")

        # UI初始化
        # 连接状态提示
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(10, 30, 170, 30))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.lineEdit.setFont(font)
        self.lineEdit.setReadOnly(True)

        # 缩放比例调整
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(20, 110, 81, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.lineEdit.setObjectName("lineEdit")
        self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.doubleSpinBox.setGeometry(QtCore.QRect(110, 110, 62, 22))
        self.doubleSpinBox.setMinimum(10.0)
        self.doubleSpinBox.setMaximum(90.0)
        self.doubleSpinBox.setProperty("value", 50.0)
        self.doubleSpinBox.setObjectName("doubleSpinBox")
        self.doubleSpinBox.valueChanged.connect(self.changerate)

        # # 纵坐标调整
        # self.label = QtWidgets.QLabel(self.centralwidget)
        # self.label.setGeometry(QtCore.QRect(20, 90, 81, 21))
        # font = QtGui.QFont()
        # font.setPointSize(12)
        # self.label.setFont(font)
        # self.label.setObjectName("label")
        # self.lineEdit.setObjectName("lineEdit")
        # self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)
        # self.doubleSpinBox.setGeometry(QtCore.QRect(110, 90, 62, 22))
        # self.doubleSpinBox.setMinimum(16.0)
        # self.doubleSpinBox.setProperty("value", 32.0)
        # self.doubleSpinBox.setObjectName("doubleSpinBox")
        #
        # # 横坐标调整
        # self.label_2 = QtWidgets.QLabel(self.centralwidget)
        # self.label_2.setGeometry(QtCore.QRect(20, 130, 81, 21))
        # font = QtGui.QFont()
        # font.setPointSize(12)
        # self.label_2.setFont(font)
        # self.label_2.setObjectName("label_2")
        # self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(self.centralwidget)
        # self.doubleSpinBox_2.setGeometry(QtCore.QRect(110, 130, 62, 22))
        # self.doubleSpinBox_2.setMinimum(50.0)
        # self.doubleSpinBox_2.setMaximum(99.0)
        # self.doubleSpinBox_2.setObjectName("doubleSpinBox_2")

        # 峰峰值标签
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(20, 190, 81, 31))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(110, 200, 71, 16))
        self.label_4.setObjectName("label_4")

        # 频率标签
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(20, 220, 81, 31))
        font = QtGui.QFont()
        font.setPointSize(17)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(110, 230, 71, 16))
        self.label_6.setObjectName("label_6")

        # 控制按钮
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(30, 300, 140, 50))
        font = QtGui.QFont()
        font.setPointSize(22)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.running = False
        self.pushButton.clicked.connect(self.switch)

        # 菜单
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 718, 23))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")

        # 二级菜单标签
        # 选择串口标签
        self.menu_2 = QtWidgets.QMenu(self.menu)
        self.menu_2.setObjectName("menu_2")
        MainWindow.setMenuBar(self.menubar)

        # 选择串口
        self.actionCOM1 = QtWidgets.QAction(MainWindow)
        self.actionCOM1.setObjectName("actionCOM1")
        self.actionCOM1.triggered.connect(lambda: self.selectCOM(0))
        self.actionCOM2 = QtWidgets.QAction(MainWindow)
        self.actionCOM2.setObjectName("actionCOM2")
        self.actionCOM2.triggered.connect(lambda: self.selectCOM(1))
        self.actionCOM3 = QtWidgets.QAction(MainWindow)
        self.actionCOM3.setObjectName("actionCOM3")
        self.actionCOM3.triggered.connect(lambda: self.selectCOM(2))
        self.menu_2.addAction(self.actionCOM1)
        self.menu_2.addAction(self.actionCOM2)
        self.menu_2.addAction(self.actionCOM3)
        self.menu.addAction(self.menu_2.menuAction())
        self.menubar.addAction(self.menu.menuAction())



        # 定时器接收数据
        self.pretime = time()
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.data_receive)

        self.retranslateUi(MainWindow)
        self.initdata()
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
Ejemplo n.º 3
0
 def __InitData(self):
     '''
               初始化成员变量
     '''
     self.__paintBoard = PaintBoard(self)
     self.__colorList = QColor.colorNames() #获取颜色列表(字符串类型)
Ejemplo n.º 4
0
Archivo: window.py Proyecto: Suqi2017/-
class MainWidget(QWidget):


    def __init__(self, Parent=None):
        '''
        Constructor
        '''
        super().__init__(Parent)
        
        self.__InitData() #先初始化数据,再初始化界面
        self.__InitView()
    
    def __InitData(self):
        '''
                  初始化成员变量
        '''
        self.__paintBoard = PaintBoard(self)
        #获取颜色列表(字符串类型)
        self.__colorList = QColor.colorNames() 
        
    def __InitView(self):
        '''
                  初始化界面
        '''
        self.setFixedSize(640,480)
        self.setWindowTitle("PaintBoard Example PyQt5")
        
        #新建一个水平布局作为本窗体的主布局
        main_layout = QHBoxLayout(self) 
        #设置主布局内边距以及控件间距为10px
        main_layout.setSpacing(10) 
    
        #在主界面左侧放置画板
        main_layout.addWidget(self.__paintBoard) 
        
        #新建垂直子布局用于放置按键
        sub_layout = QVBoxLayout() 
        
        #设置此子布局和内部控件的间距为10px
        sub_layout.setContentsMargins(10, 10, 10, 10) 

        self.__btn_Clear = QPushButton("清空画板")
        self.__btn_Clear.setParent(self) #设置父对象为本界面
       
    #将按键按下信号与画板清空函数相关联
    	self.__btn_Clear.clicked.connect(self.__paintBoard.Clear) 
        sub_layout.addWidget(self.__btn_Clear)
        
        self.__btn_Quit = QPushButton("退出")
        self.__btn_Quit.setParent(self) #设置父对象为本界面
        self.__btn_Quit.clicked.connect(self.Quit)
        sub_layout.addWidget(self.__btn_Quit)
        
        self.__btn_Save = QPushButton("保存作品")
        self.__btn_Save.setParent(self)
        self.__btn_Save.clicked.connect(self.on_btn_Save_Clicked)
        sub_layout.addWidget(self.__btn_Save)
        
        self.__cbtn_Eraser = QCheckBox("  使用橡皮擦")
        self.__cbtn_Eraser.setParent(self)
        self.__cbtn_Eraser.clicked.connect(self.on_cbtn_Eraser_clicked)
        sub_layout.addWidget(self.__cbtn_Eraser)
        
        splitter = QSplitter(self) #占位符
        sub_layout.addWidget(splitter)
        
        self.__label_penThickness = QLabel(self)
        self.__label_penThickness.setText("画笔粗细")
        self.__label_penThickness.setFixedHeight(20)
        sub_layout.addWidget(self.__label_penThickness)
        
        self.__spinBox_penThickness = QSpinBox(self)
        self.__spinBox_penThickness.setMaximum(20)
        self.__spinBox_penThickness.setMinimum(2)
        self.__spinBox_penThickness.setValue(10) #默认粗细为10
        self.__spinBox_penThickness.setSingleStep(2) #最小变化值为2
        self.__spinBox_penThickness.valueChanged.connect(self.on_PenThicknessChange)#关联spinBox值变化信号和函数on_PenThicknessChange
        sub_layout.addWidget(self.__spinBox_penThickness)
        
        self.__label_penColor = QLabel(self)
        self.__label_penColor.setText("画笔颜色")
        self.__label_penColor.setFixedHeight(20)
        sub_layout.addWidget(self.__label_penColor)
        
        self.__comboBox_penColor = QComboBox(self)
        self.__fillColorList(self.__comboBox_penColor) #用各种颜色填充下拉列表
        self.__comboBox_penColor.currentIndexChanged.connect(self.on_PenColorChange) #关联下拉列表的当前索引变更信号与函数on_PenColorChange
        sub_layout.addWidget(self.__comboBox_penColor)

        main_layout.addLayout(sub_layout) #将子布局加入主布局


    def __fillColorList(self, comboBox):

        index_black = 0
        index = 0
        for color in self.__colorList: 
            if color == "black":
                index_black = index
            index += 1
            pix = QPixmap(70,20)
            pix.fill(QColor(color))
            comboBox.addItem(QIcon(pix),None)
            comboBox.setIconSize(QSize(70,20))
            comboBox.setSizeAdjustPolicy(QComboBox.AdjustToContents)

        comboBox.setCurrentIndex(index_black)
        
    def on_PenColorChange(self):
        color_index = self.__comboBox_penColor.currentIndex()
        color_str = self.__colorList[color_index]
        self.__paintBoard.ChangePenColor(color_str)

    def on_PenThicknessChange(self):
        penThickness = self.__spinBox_penThickness.value()
        self.__paintBoard.ChangePenThickness(penThickness)
    
    def on_btn_Save_Clicked(self):
        savePath = QFileDialog.getSaveFileName(self, 'Save Your Paint', '.\\', '*.png')
        print(savePath)
        if savePath[0] == "":
            print("Save cancel")
            return
        image = self.__paintBoard.GetContentAsQImage()
        image.save(savePath[0])
        
    def on_cbtn_Eraser_clicked(self):
        if self.__cbtn_Eraser.isChecked():
            self.__paintBoard.EraserMode = True #进入橡皮擦模式
        else:
            self.__paintBoard.EraserMode = False #退出橡皮擦模式
        
        
    def Quit(self):
        self.close()
Ejemplo n.º 5
0
class MainWidget(QWidget):


    def __init__(self, Parent=None):
        '''
        Constructor
        '''
        super().__init__(Parent)
        
        self.__InitData() #先初始化数据,再初始化界面
        self.__InitView()
    
    def __InitData(self):
        '''
                  初始化成员变量
        '''
        self.__paintBoard = PaintBoard(self)
        self.__colorList = QColor.colorNames() #获取颜色列表(字符串类型)
        
    def __InitView(self):
        '''
                  初始化界面
        '''
        self.setFixedSize(2560,1600)
        self.setWindowTitle("图形学画板")
        

        main_layout = QHBoxLayout(self) #新建一个水平布局作为本窗体的主布局
        main_layout.setSpacing(10) #设置主布局内边距以及控件间距为10px

        sub_layout_LEVEL1 = QVBoxLayout() #新建垂直子布局用于放置按键
        sub_layout_LEVEL1.setContentsMargins(10, 10, 10, 10) #设置此子布局和内部控件的间距为10px
        main_layout.addLayout(sub_layout_LEVEL1) #将子布局1加入主布局

        sub_layout_LEVEL2 = QVBoxLayout()  # 新建垂直子布局用于放置按键
        sub_layout_LEVEL2.setContentsMargins(10, 10, 10, 10)  # 设置此子布局和内部控件的间距为10px
        main_layout.addLayout(sub_layout_LEVEL2)  # 将子布局2加入主布局

        sub_layout_LEVEL3 = QVBoxLayout()  # 新建垂直子布局用于放置按键
        sub_layout_LEVEL3.setContentsMargins(10, 10, 10, 10)  # 设置此子布局和内部控件的间距为10px
        main_layout.addLayout(sub_layout_LEVEL3)  # 将子布局2加入主布局

        sub_layout_LEVEL2_1 = QHBoxLayout()  # 新建水平子布局用于放置按键
        sub_layout_LEVEL2_1.setContentsMargins(10, 10, 10, 10)  # 设置此子布局和内部控件的间距为10px
        sub_layout_LEVEL2.addLayout(sub_layout_LEVEL2_1)

        sub_layout_LEVEL2_2 = QHBoxLayout()  # 新建水平子布局用于放置按键
        sub_layout_LEVEL2_2.setContentsMargins(10, 10, 10, 10)  # 设置此子布局和内部控件的间距为10px
        sub_layout_LEVEL2.addLayout(sub_layout_LEVEL2_2)

        sub_layout_LEVEL2_3 = QHBoxLayout()  # 新建水平子布局用于放置按键
        sub_layout_LEVEL2_3.setContentsMargins(10, 10, 10, 10)  # 设置此子布局和内部控件的间距为10px
        sub_layout_LEVEL2.addLayout(sub_layout_LEVEL2_3)

        sub_layout_LEVEL2_4 = QHBoxLayout()  # 新建水平子布局用于放置按键
        sub_layout_LEVEL2_4.setContentsMargins(10, 10, 10, 10)  # 设置此子布局和内部控件的间距为10px
        sub_layout_LEVEL2.addLayout(sub_layout_LEVEL2_4)

        #放置左侧图标
        self.__btn_Quit = QPushButton("    退出")
        self.__btn_Quit.setIcon(QIcon("1.png"))  # 设置图标
        self.__btn_Quit.setFixedHeight(60)
        self.__btn_Quit.setFixedWidth(200)
        self.__btn_Quit.setParent(self) #设置父对象为本界面
        self.__btn_Quit.clicked.connect(self.Quit)
        sub_layout_LEVEL1.addWidget(self.__btn_Quit)
        
        self.__btn_Save = QPushButton("保存作品")
        self.__btn_Save.setIcon(QIcon("1.png"))  # 设置图标
        self.__btn_Save.setFixedHeight(60)
        self.__btn_Save.setFixedWidth(200)
        self.__btn_Save.setParent(self)
        self.__btn_Save.clicked.connect(self.on_btn_Save_Clicked)
        sub_layout_LEVEL1.addWidget(self.__btn_Save)

        self.__btn_Load = QPushButton("读取作品")
        self.__btn_Load.setIcon(QIcon("1.png"))  # 设置图标
        self.__btn_Load.setFixedHeight(60)
        self.__btn_Load.setFixedWidth(200)
        self.__btn_Load.setParent(self)
        self.__btn_Load.clicked.connect(self.on_btn_Load_Clicked)
        sub_layout_LEVEL1.addWidget(self.__btn_Load)

        splitter = QSplitter(self) #占位符
        sub_layout_LEVEL1.addWidget(splitter)

        self.__cbtn_drawline=QPushButton("    直线")
        self.__cbtn_drawline.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_drawline.setFixedHeight(60)
        self.__cbtn_drawline.setFixedWidth(200)
        self.__cbtn_drawline.setParent(self)
        self.__cbtn_drawline.clicked.connect(self.on_cbtn_drawline_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_drawline)

        self.__cbtn_zhexian = QPushButton("    折线")
        self.__cbtn_zhexian.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_zhexian.setFixedHeight(60)
        self.__cbtn_zhexian.setFixedWidth(200)
        self.__cbtn_zhexian.setParent(self)
        self.__cbtn_zhexian.clicked.connect(self.on_cbtn_zhexian_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_zhexian)

        self.__cbtn_zhijiaoxian = QPushButton("  直角线")
        self.__cbtn_zhijiaoxian.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_zhijiaoxian.setFixedHeight(60)
        self.__cbtn_zhijiaoxian.setFixedWidth(200)
        self.__cbtn_zhijiaoxian.setParent(self)
        self.__cbtn_zhijiaoxian.clicked.connect(self.on_cbtn_zhijiaoxian_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_zhijiaoxian)

        self.__cbtn_duobianxing = QPushButton("  多边形")
        self.__cbtn_duobianxing.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_duobianxing.setFixedHeight(60)
        self.__cbtn_duobianxing.setFixedWidth(200)
        self.__cbtn_duobianxing.setParent(self)
        self.__cbtn_duobianxing.clicked.connect(self.on_cbtn_duobianxing_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_duobianxing)

        self.__cbtn_circle = QPushButton("  圆    ")
        self.__cbtn_circle.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_circle.setFixedHeight(60)
        self.__cbtn_circle.setFixedWidth(200)
        self.__cbtn_circle.setParent(self)
        self.__cbtn_circle.clicked.connect(self.on_cbtn_circle_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_circle)

        self.__cbtn_oval = QPushButton("    椭圆")
        self.__cbtn_oval.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_oval.setFixedHeight(60)
        self.__cbtn_oval.setFixedWidth(200)
        self.__cbtn_oval.setParent(self)
        self.__cbtn_oval.clicked.connect(self.on_cbtn_oval_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_oval)

        self.__cbtn_yuanhu = QPushButton("    圆弧")
        self.__cbtn_yuanhu.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_yuanhu.setFixedHeight(60)
        self.__cbtn_yuanhu.setFixedWidth(200)
        self.__cbtn_yuanhu.setParent(self)
        self.__cbtn_yuanhu.clicked.connect(self.on_cbtn_yuanhu_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_yuanhu)

        self.__cbtn_tuoyuanhu = QPushButton("  椭圆弧")
        self.__cbtn_tuoyuanhu.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_tuoyuanhu.setFixedHeight(60)
        self.__cbtn_tuoyuanhu.setFixedWidth(200)
        self.__cbtn_tuoyuanhu.setParent(self)
        self.__cbtn_tuoyuanhu.clicked.connect(self.on_cbtn_tuoyuanhu_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_tuoyuanhu)

        self.__cbtn_renyiquxian = QPushButton("任意曲线")
        self.__cbtn_renyiquxian.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_renyiquxian.setFixedHeight(60)
        self.__cbtn_renyiquxian.setFixedWidth(200)
        self.__cbtn_renyiquxian.setParent(self)
        self.__cbtn_renyiquxian.clicked.connect(self.on_cbtn_renyiquxian_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_renyiquxian)

        self.__cbtn_smooth_rectangle = QPushButton("圆角矩形")
        self.__cbtn_smooth_rectangle.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_smooth_rectangle.setFixedHeight(60)
        self.__cbtn_smooth_rectangle.setFixedWidth(200)
        self.__cbtn_smooth_rectangle.setParent(self)
        self.__cbtn_smooth_rectangle.clicked.connect(self.on_cbtn_smooth_rectangle_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_smooth_rectangle)

        self.__cbtn_rectangle = QPushButton("    矩形")
        self.__cbtn_rectangle.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_rectangle.setFixedHeight(60)
        self.__cbtn_rectangle.setFixedWidth(200)
        self.__cbtn_rectangle.setParent(self)
        self.__cbtn_rectangle.clicked.connect(self.on_cbtn_rectangle_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_rectangle)

        self.__cbtn_character = QPushButton("    字符")
        self.__cbtn_character.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_character.setFixedHeight(60)
        self.__cbtn_character.setFixedWidth(200)
        self.__cbtn_character.setParent(self)
        self.__cbtn_character.clicked.connect(self.on_cbtn_character_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_character)

        splitter = QSplitter(self) #占位符
        sub_layout_LEVEL1.addWidget(splitter)

        self.__cbtn_Eraser = QCheckBox("橡皮擦")
        self.__cbtn_Eraser.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_Eraser.setFixedHeight(60)
        self.__cbtn_Eraser.setFixedWidth(200)
        self.__cbtn_Eraser.setParent(self)
        self.__cbtn_Eraser.clicked.connect(self.on_cbtn_Eraser_clicked)
        sub_layout_LEVEL1.addWidget(self.__cbtn_Eraser)

        self.__btn_Clear = QPushButton("清空画板")
        self.__btn_Clear.setParent(self)  # 设置父对象为本界面
        self.__btn_Clear.setIcon(QIcon("1.png"))  # 设置图标
        self.__btn_Clear.setFixedHeight(60)
        self.__btn_Clear.setFixedWidth(200)
        self.__btn_Clear.clicked.connect(self.__paintBoard.Clear)  # 将按键按下信号与画板清空函数相关联
        sub_layout_LEVEL1.addWidget(self.__btn_Clear)

        splitter = QSplitter(self) #占位符
        sub_layout_LEVEL1.addWidget(splitter)

        self.__label_penThickness = QLabel(self)
        self.__label_penThickness.setText("画笔粗细")
        self.__label_penThickness.setFixedHeight(60)
        self.__label_penThickness.setFixedWidth(200)
        sub_layout_LEVEL1.addWidget(self.__label_penThickness)
        
        self.__spinBox_penThickness = QSpinBox(self)
        self.__spinBox_penThickness.setFixedHeight(60)
        self.__spinBox_penThickness.setFixedWidth(200)
        self.__spinBox_penThickness.setMaximum(20)
        self.__spinBox_penThickness.setMinimum(2)
        self.__spinBox_penThickness.setValue(10) #默认粗细为10
        self.__spinBox_penThickness.setSingleStep(2) #最小变化值为1
        self.__spinBox_penThickness.valueChanged.connect(self.on_PenThicknessChange)#关联spinBox值变化信号和函数on_PenThicknessChange
        sub_layout_LEVEL1.addWidget(self.__spinBox_penThickness)

        self.__label_penThickness = QLabel(self)
        self.__label_penThickness.setText("选择颜色")
        self.__label_penThickness.setFixedHeight(60)
        self.__label_penThickness.setFixedWidth(200)
        sub_layout_LEVEL1.addWidget(self.__label_penThickness)
        
        self.__comboBox_penColor = QComboBox(self)
        self.__comboBox_penColor.setFixedHeight(60)
        self.__comboBox_penColor.setFixedWidth(200)
        self.__fillColorList(self.__comboBox_penColor) #用各种颜色填充下拉列表
        self.__comboBox_penColor.currentIndexChanged.connect(self.on_PenColorChange) #关联下拉列表的当前索引变更信号与函数on_PenColorChange
        sub_layout_LEVEL1.addWidget(self.__comboBox_penColor)

        self.__btn_fillcolor = QPushButton("填充颜色")
        self.__btn_fillcolor.setIcon(QIcon("1.png"))  # 设置图标
        self.__btn_fillcolor.setFixedHeight(60)
        self.__btn_fillcolor.setFixedWidth(200)
        self.__btn_fillcolor.setParent(self)
        self.__btn_fillcolor.clicked.connect(self.on_btn_fillcolor_Clicked)
        sub_layout_LEVEL1.addWidget(self.__btn_fillcolor)

        #放置中间图标
        sub_layout_LEVEL2_2.addWidget(self.__paintBoard)#放置画板

        self.__cbtn_recall = QPushButton("    撤回")
        self.__cbtn_recall.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_recall.setFixedHeight(60)
        self.__cbtn_recall.setFixedWidth(200)
        self.__cbtn_recall.setParent(self)
        self.__cbtn_recall.clicked.connect(self.on_cbtn_recall_clicked)
        sub_layout_LEVEL2_3.addWidget(self.__cbtn_recall)

        self.__cbtn_repetition = QPushButton("    重复")
        self.__cbtn_repetition.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_repetition.setFixedHeight(60)
        self.__cbtn_repetition.setFixedWidth(200)
        self.__cbtn_repetition.setParent(self)
        self.__cbtn_repetition.clicked.connect(self.on_cbtn_repetition_clicked)
        sub_layout_LEVEL2_3.addWidget(self.__cbtn_repetition)

        self.__cbtn_aim_left = QPushButton("  左对齐")
        self.__cbtn_aim_left.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_aim_left.setFixedHeight(60)
        self.__cbtn_aim_left.setFixedWidth(200)
        self.__cbtn_aim_left.setParent(self)
        self.__cbtn_aim_left.clicked.connect(self.on_cbtn_aim_left_clicked)
        sub_layout_LEVEL2_1.addWidget(self.__cbtn_aim_left)

        self.__cbtn_aim_middle = QPushButton("中间对齐")
        self.__cbtn_aim_middle.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_aim_middle.setFixedHeight(60)
        self.__cbtn_aim_middle.setFixedWidth(200)
        self.__cbtn_aim_middle.setParent(self)
        self.__cbtn_aim_middle.clicked.connect(self.on_cbtn_aim_middle_clicked)
        sub_layout_LEVEL2_1.addWidget(self.__cbtn_aim_middle)

        self.__cbtn_aim_right = QPushButton("  右对齐")
        self.__cbtn_aim_right.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_aim_right.setFixedHeight(60)
        self.__cbtn_aim_right.setFixedWidth(200)
        self.__cbtn_aim_right.setParent(self)
        self.__cbtn_aim_right.clicked.connect(self.on_cbtn_aim_right_clicked)
        sub_layout_LEVEL2_1.addWidget(self.__cbtn_aim_right)

        self.__cbtn_cut_inside = QPushButton("  内裁剪")
        self.__cbtn_cut_inside.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_cut_inside.setFixedHeight(60)
        self.__cbtn_cut_inside.setFixedWidth(200)
        self.__cbtn_cut_inside.setParent(self)
        self.__cbtn_cut_inside.clicked.connect(self.on_cbtn_cut_inside_clicked)
        sub_layout_LEVEL2_4.addWidget(self.__cbtn_cut_inside)

        self.__cbtn_cut_outside = QPushButton("  外裁剪")
        self.__cbtn_cut_outside.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_cut_outside.setFixedHeight(60)
        self.__cbtn_cut_outside.setFixedWidth(200)
        self.__cbtn_cut_outside.setParent(self)
        self.__cbtn_cut_outside.clicked.connect(self.on_cbtn_cut_outside_clicked)
        sub_layout_LEVEL2_4.addWidget(self.__cbtn_cut_outside)

        #放置右侧图标

        self.__cbtn_select = QPushButton("    选择")
        self.__cbtn_select.setIcon(QIcon("1.png"))  # 设置图标
        self.__cbtn_select.setFixedHeight(60)
        self.__cbtn_select.setFixedWidth(200)
        self.__cbtn_select.setParent(self)
        self.__cbtn_select.clicked.connect(self.on_cbtn_select_clicked)
        sub_layout_LEVEL3.addWidget(self.__cbtn_select)

    def __fillColorList(self, comboBox):

        index_black = 0
        index = 0
        for color in self.__colorList: 
            if color == "black":
                index_black = index
            index += 1
            pix = QPixmap(70,20)
            pix.fill(QColor(color))
            comboBox.addItem(QIcon(pix),None)
            comboBox.setIconSize(QSize(70,20))
            comboBox.setSizeAdjustPolicy(QComboBox.AdjustToContents)

        comboBox.setCurrentIndex(index_black)
        
    def on_PenColorChange(self):
        color_index = self.__comboBox_penColor.currentIndex()
        color_str = self.__colorList[color_index]
        self.__paintBoard.ChangePenColor(color_str)

    def on_PenThicknessChange(self):
        penThickness = self.__spinBox_penThickness.value()
        self.__paintBoard.ChangePenThickness(penThickness)
    
    def on_btn_Save_Clicked(self):
        savePath = QFileDialog.getSaveFileName(self, 'Save Your Paint', '.\\', '*.png')
        print(savePath)
        if savePath[0] == "":
            print("Save cancel")
            return
        image = self.__paintBoard.GetContentAsQImage()
        image.save(savePath[0])
        
    def on_cbtn_Eraser_clicked(self):
        if self.__cbtn_Eraser.isChecked():
            self.__paintBoard.EraserMode = True #进入橡皮擦模式
        else:
            self.__paintBoard.EraserMode = False #退出橡皮擦模式
        
    def on_cbtn_drawline_clicked(self):
        print("划线函数")

    def on_btn_Load_Clicked(self):
        print("读取作品")

    def on_cbtn_zhexian_clicked(self):
        print("折线")

    def on_cbtn_zhijiaoxian_clicked(self):
        print("直角线")

    def on_cbtn_duobianxing_clicked(self):
        print("多边形")

    def on_cbtn_circle_clicked(self):
        print("圆")

    def on_cbtn_oval_clicked(self):
        print("椭圆")

    def on_cbtn_yuanhu_clicked(self):
        print("圆弧")

    def on_cbtn_tuoyuanhu_clicked(self):
        print("椭圆弧")

    def on_cbtn_renyiquxian_clicked(self):
        print("任意曲线")

    def on_cbtn_smooth_rectangle_clicked(self):
        print("圆角矩形")

    def on_cbtn_rectangle_clicked(self):
        print("矩形")

    def on_cbtn_character_clicked(self):
        print("字符")

    def on_cbtn_recall_clicked(self):
        print("撤回")

    def on_cbtn_repetition_clicked(self):
        print("重复")

    def on_cbtn_aim_left_clicked(self):
        print("左对齐")

    def on_cbtn_aim_middle_clicked(self):
        print("中间对齐")

    def on_cbtn_aim_right_clicked(self):
        print("右对齐")

    def on_cbtn_cut_inside_clicked(self):
        print("内裁剪")

    def on_cbtn_cut_outside_clicked(self):
        print("外裁剪")

    def on_cbtn_select_clicked(self):
        print("选择")

    def on_btn_fillcolor_Clicked(self):
        print("填充颜色")

    # def on_cbtn_drawline_clicked(self):
    #     print("划线函数")
    #
    # def on_cbtn_drawline_clicked(self):
    #     print("划线函数")
    #
    # def on_cbtn_drawline_clicked(self):
    #     print("划线函数")
    #
    # def on_cbtn_drawline_clicked(self):
    #     print("划线函数")
    #
    # def on_cbtn_drawline_clicked(self):
    #     print("划线函数")
    #
    # def on_cbtn_drawline_clicked(self):
    #     print("划线函数")

    def on_cbtn_drawline_clicked(self):
        print("划线函数")
    def Quit(self):
        self.close()
Ejemplo n.º 6
0
class MainWidget(QWidget):
    def __init__(self, Parent=None):
        super().__init__(Parent)
        self.__InitData()
        self.__InitView()
        f = open("params15000.json", "r")
        data = json.load(f)
        f.close()
        self.biase = np.array(data["biase"])
        self.w_in = np.array(data["w_in"])
        self.w_out = np.array(data["w_out"])
    def __InitData(self):
        self.__paintBoard = PaintBoard(self)
        self.__colorList = QColor.colorNames()
    def __InitView(self):
        # self.setFixedSize(640,480)
        # self.setFixedSize(480,410)
        self.setFixedSize(800, 618)
        self.setWindowTitle("Handwritten Digit Recognition Based on HOG-ELM")
        self.setWindowIcon(QIcon('ICON.ico'))
        main_layout = QHBoxLayout(self)
        main_layout.setSpacing(10)
        main_layout.addWidget(self.__paintBoard)
        self.font = QtGui.QFont()
        self.font.setFamily("Consolas")
        self.font.setPointSize(15)
        sub_layout = QVBoxLayout()
        sub_layout.setContentsMargins(10, 10, 10, 10)
        self.__btn_Clear = QPushButton("Clear Board")
        self.__btn_Clear.setParent(self)
        self.__btn_Clear.setFixedSize(146, 70)
        self.__btn_Clear.setFont(self.font)
        self.__btn_Clear.clicked.connect(self.__paintBoard.Clear)
        sub_layout.addWidget(self.__btn_Clear)
        self.__btn_Quit = QPushButton("Exit")
        self.__btn_Quit.setParent(self)
        self.__btn_Quit.setFixedSize(146, 70)
        self.__btn_Quit.setFont(self.font)
        self.__btn_Quit.clicked.connect(self.Quit)
        sub_layout.addWidget(self.__btn_Quit)
        self.__btn_Save = QPushButton("Save Board")
        self.__btn_Save.setParent(self)
        self.__btn_Save.setFixedSize(146, 70)
        self.__btn_Save.setFont(self.font)
        self.__btn_Save.clicked.connect(self.on_btn_Save_Clicked)
        sub_layout.addWidget(self.__btn_Save)
        self.__cbtn_Eraser = QCheckBox("Eraser")
        self.__cbtn_Eraser.setParent(self)
        self.__cbtn_Eraser.setFont(self.font)
        self.__cbtn_Eraser.clicked.connect(self.on_cbtn_Eraser_clicked)
        sub_layout.addWidget(self.__cbtn_Eraser)
        self.__label_result = QLabel(self)
        self.__label_result.setAlignment(Qt.AlignCenter)
        self.__label_result.setFixedWidth(146)
        self.__label_result.setFixedHeight(80)
        self.__label_result.setFrameStyle(PyQt5.QtWidgets.QFrame.Box)
        self.__label_result.setFrameShadow(PyQt5.QtWidgets.QFrame.Raised)
        self.__label_result.setLineWidth(6)
        self.__label_result.setMidLineWidth(5)
        self.__label_result.setStyleSheet('background-color: rgb(255,123,100)')
        sub_layout.addWidget(self.__label_result)
        self.__btn_Recognize = QPushButton("Recognition")
        self.__btn_Recognize.setParent(self)
        self.__btn_Recognize.setFixedSize(146, 70)
        self.__btn_Recognize.setFont(self.font)
        self.__btn_Recognize.clicked.connect(self.on_btn_Recognize_clicked)
        sub_layout.addWidget(self.__btn_Recognize)
        self.__label_timage = QLabel(self)
        self.__label_timage.setAlignment(Qt.AlignCenter)
        self.__label_timage.setFixedWidth(146)
        self.__label_timage.setFixedHeight(80)
        self.__label_timage.setFrameStyle(PyQt5.QtWidgets.QFrame.Box)
        self.__label_timage.setFrameShadow(PyQt5.QtWidgets.QFrame.Raised)
        self.__label_timage.setLineWidth(6)
        self.__label_timage.setMidLineWidth(5)
        self.__label_timage.setStyleSheet('background-color: rgb(125,143,50)')
        sub_layout.addWidget(self.__label_timage)
        self.__btn_Random = QPushButton("RandomDigit \nFrom TestSet")
        self.__btn_Random.setParent(self)
        self.__btn_Random.setFixedSize(146, 70)
        self.font.setPointSize(13)
        self.__btn_Random.setFont(self.font)
        self.__btn_Random.clicked.connect(self.on_btn_RandomDigit_Clicked)
        sub_layout.addWidget(self.__btn_Random)
        main_layout.addLayout(sub_layout)
    def __fillColorList(self, comboBox):
        index_black = 0
        index = 0
        for color in self.__colorList:
            if color == "black":
                index_black = index
            index += 1
            pix = QPixmap(70, 20)
            pix.fill(QColor(color))
            comboBox.addItem(QIcon(pix), None)
            comboBox.setIconSize(QSize(70, 20))
            comboBox.setSizeAdjustPolicy(QComboBox.AdjustToContents)
        comboBox.setCurrentIndex(index_black)
    def on_PenColorChange(self):
        color_index = self.__comboBox_penColor.currentIndex()
        color_str = self.__colorList[color_index]
        self.__paintBoard.ChangePenColor(color_str)
    def on_PenThicknessChange(self):
        penThickness = self.__spinBox_penThickness.value()
        self.__paintBoard.ChangePenThickness(penThickness)
    def on_btn_Save_Clicked(self):
        savePath = QFileDialog.getSaveFileName(self, 'Save Your Paint', '.\\', '*.png')
        print(savePath)
        if savePath[0] == "":
            print("Save cancel")
            return
        image = self.__paintBoard.GetContentAsQImage()
        image.save(savePath[0])
    def on_cbtn_Eraser_clicked(self):
        if self.__cbtn_Eraser.isChecked():
            self.__paintBoard.EraserMode = True
        else:
            self.__paintBoard.EraserMode = False
    def on_btn_RandomDigit_Clicked(self):
        f = open('x_test_10000.pkl', 'rb')
        x_test = pickle.load(f, encoding='bytes')
        f.close()
        ff = open('y_test_10000.pkl', 'rb')
        y_test = pickle.load(ff, encoding='bytes')
        ff.close()
        random_id = random.randint(0, 9999)
        image = Image.fromarray(np.reshape(x_test[random_id], (28, 28)) * 255).convert('L')
        new_image = image.resize((44, 44))
        # new_image.show()
        new_image.save('tpic.png')
        pixmap = QPixmap('tpic.png')
        self.__label_timage.setPixmap(pixmap)
        res = self.judge(np.reshape(x_test[random_id], (28, 28)))
        myres = "{0}|{1}".format(res, int(y_test[random_id]))
        # show my result
        font = QtGui.QFont()
        font.setFamily('Consolas')
        font.setBold(True)
        font.setPointSize(18)
        font.setWeight(75)
        self.__label_result.setFont(font)
        self.__label_result.setText(myres)
    def sigmoid(self, x):
        return 1.0 / (1.0 + np.exp(-x))
    def judge(self, input_v):
        fd = hog(input_v,
                 orientations=5,
                 pixels_per_cell=(4, 4),
                 cells_per_block=(3, 3),
                 block_norm='L1-sqrt',
                 transform_sqrt=True,
                 feature_vector=True,
                 visualise=False
                 )
        length = len(fd)
        y_hat = np.dot(self.w_out,
                       self.sigmoid(np.dot(self.w_in, np.reshape(fd, (length, 1))) + self.biase.transpose()))
        res_id = np.argmax(y_hat)
        y_hat[y_hat < 0] = 0
        prapability = y_hat[res_id] / np.sum(y_hat)
        myres = "{0}({1}%)".format(res_id, int(prapability * 100))
        return myres
    def on_btn_Recognize_clicked(self):
        savePath = "tmp.png"
        image = self.__paintBoard.GetContentAsQImage()
        image.save(savePath)
        t_image = Image.open(savePath).convert('L')
        newt_image = t_image.resize((28, 28))
        # newt_image.save("tmp1.png")
        np_image = np.array(newt_image) / 255.0
        # print (np_image.shape)
        # print (np_image)
        myres = self.judge(np_image)
        # show my result
        font = QtGui.QFont()
        font.setFamily('Consolas')
        font.setBold(True)
        font.setPointSize(20)
        font.setWeight(75)
        self.__label_result.setFont(font)
        self.__label_result.setText(myres)
        # print (myres)
    def Quit(self):
        self.close()
Ejemplo n.º 7
0
 def __InitData(self):
     self.__paintBoard = PaintBoard(self)
     self.__colorList = QColor.colorNames()
Ejemplo n.º 8
0
class MainWidget(QWidget):


    def __init__(self, Parent=None):
        '''
        Constructor
        '''
        super().__init__(Parent)
        
        self.__InitData() #先初始化数据,再初始化界面
        self.__InitView()
    
    def __InitData(self):
        '''
                  初始化成员变量
        '''
        self.__paintBoard = PaintBoard(self)
        #获取颜色列表(字符串类型)
        self.__colorList = QColor.colorNames() 
        
    def __InitView(self):
        '''
                  初始化界面
        '''
        
        #新建一个水平布局作为本窗体的主布局
        main_layout = QHBoxLayout(self) 
        #设置主布局内边距以及控件间距为10px
        main_layout.setSpacing(10) 
    
        #在主界面左侧放置画板
        main_layout.addWidget(self.__paintBoard) 
        
        #新建垂直子布局用于放置按键
        sub_layout = QVBoxLayout() 
        
        
        #设置此子布局和内部控件的间距为10px
        sub_layout.setContentsMargins(10, 10, 10, 10) 

        self.__btn_Clear = QPushButton("清空画板")
        self.__btn_Clear.setParent(self) #设置父对象为本界面
       
        #将按键按下信号与画板清空函数相关联
        self.__btn_Clear.clicked.connect(self.__paintBoard.Clear) 
        sub_layout.addWidget(self.__btn_Clear)
        
        self.setFixedSize(660,480)
        self.setWindowTitle("手写数字识别")

        '''
        
        '''
        '''
        self.label_name = QLabel('江西理工大学', self)
        self.label_name.setGeometry(500,200,120,35)
        
        self.label_name = QLabel('信息工程学院', self)
        self.label_name.setGeometry(500,230,100,35)

        self.label_name = QLabel('电信172', self)
        self.label_name.setGeometry(500,260,100,35)

        self.label_name = QLabel('夏奥', self)
        self.label_name.setGeometry(500,290,100,35)
        '''

        self.label_name=QLabel('识别结果',self)
        self.label_name.setGeometry(500,200,100,35)


        self.__btn_Recognize=QPushButton("开始识别")
        self.__btn_Recognize.setParent(self)
        self.__btn_Recognize.clicked.connect(self.on_btn_Recognize_Clicked)
        sub_layout.addWidget(self.__btn_Recognize)

        self.__btn_Quit = QPushButton("退出")
        self.__btn_Quit.setParent(self) #设置父对象为本界面
        self.__btn_Quit.clicked.connect(self.Quit)
        sub_layout.addWidget(self.__btn_Quit)

        self.lcd_num=QLCDNumber(13,self)
        #self.lcd_num.resize(100,100)
        self.lcd_num.setDigitCount(1)
        self.lcd_num.move(500,400)
        sub_layout.addWidget(self.lcd_num)

        '''
        self.__btn_Save = QPushButton("保存作品")
        self.__btn_Save.setParent(self)
        self.__btn_Save.clicked.connect(self.on_btn_Save_Clicked)
        sub_layout.addWidget(self.__btn_Save)
        '''
        
        '''
        self.__cbtn_Eraser = QCheckBox("  使用橡皮擦")
        self.__cbtn_Eraser.setParent(self)
        self.__cbtn_Eraser.clicked.connect(self.on_cbtn_Eraser_clicked)
        sub_layout.addWidget(self.__cbtn_Eraser)
        '''
        
        splitter = QSplitter(self) #占位符
        sub_layout.addWidget(splitter)
        
        self.__label_penThickness = QLabel(self)
        self.__label_penThickness.setText("画笔粗细")
        self.__label_penThickness.setFixedHeight(20)
        sub_layout.addWidget(self.__label_penThickness)
        
        self.__spinBox_penThickness = QSpinBox(self)
        self.__spinBox_penThickness.setMaximum(60)
        self.__spinBox_penThickness.setMinimum(2)
        self.__spinBox_penThickness.setValue(30) #默认粗细为10
        self.__spinBox_penThickness.setSingleStep(2) #最小变化值为2
        self.__spinBox_penThickness.valueChanged.connect(self.on_PenThicknessChange)#关联spinBox值变化信号和函数on_PenThicknessChange
        sub_layout.addWidget(self.__spinBox_penThickness)
        
        self.__label_penColor = QLabel(self)
        self.__label_penColor.setText("画笔颜色")
        self.__label_penColor.setFixedHeight(20)
        sub_layout.addWidget(self.__label_penColor)
        
        self.__comboBox_penColor = QComboBox(self)
        self.__fillColorList(self.__comboBox_penColor) #用各种颜色填充下拉列表
        self.__comboBox_penColor.currentIndexChanged.connect(self.on_PenColorChange) #关联下拉列表的当前索引变更信号与函数on_PenColorChange
        sub_layout.addWidget(self.__comboBox_penColor)

        main_layout.addLayout(sub_layout) #将子布局加入主布局


    def __fillColorList(self, comboBox):

        index_black = 0
        index = 0
        for color in self.__colorList: 
            if color == "black":
                index_black = index
            index += 1
            pix = QPixmap(70,20)
            pix.fill(QColor(color))
            comboBox.addItem(QIcon(pix),None)
            comboBox.setIconSize(QSize(70,20))
            comboBox.setSizeAdjustPolicy(QComboBox.AdjustToContents)

        comboBox.setCurrentIndex(index_black)
        
    def on_PenColorChange(self):
        color_index = self.__comboBox_penColor.currentIndex()
        color_str = self.__colorList[color_index]
        self.__paintBoard.ChangePenColor(color_str)

    def on_PenThicknessChange(self):
        penThickness = self.__spinBox_penThickness.value()
        self.__paintBoard.ChangePenThickness(penThickness)
    
    '''
    def on_btn_Save_Clicked(self):
        savePath = QFileDialog.getSaveFileName(self, 'Save Your Paint', '.\\', '*.png')
        print(savePath)
        if savePath[0] == "":
            print("Save cancel")
            return
        image = self.__paintBoard.GetContentAsQImage()
        image.save(savePath[0])
    '''
    def on_cbtn_Eraser_clicked(self):
        if self.__cbtn_Eraser.isChecked():
            self.__paintBoard.EraserMode = True #进入橡皮擦模式
        else:
            self.__paintBoard.EraserMode = False #退出橡皮擦模式
    
    def on_btn_Recognize_Clicked(self):
        savePath = "C:/Users/夜了/.vscode/knn/pic/test.png"
        image = self.__paintBoard.GetContentAsQImage()
        #im=image.resize((48,48),Image.ANTIALIAS)
        image.save(savePath)
        print(savePath)
        ans=work()
        self.lcd_num.display(ans)

        
    def Quit(self):
        self.close()
Ejemplo n.º 9
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setFixedSize(1200, 657)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.img_ori = QtWidgets.QLabel(self.centralwidget)
        self.img_ori.setGeometry(QtCore.QRect(80, 155, 440, 440))
        self.img_ori.setText("")
        self.img_ori.setObjectName("img_ori")
        self.PaintBoard = PaintBoard(self.centralwidget)
        self.PaintBoard.setGeometry(QtCore.QRect(80, 155, 440, 440))
        self.PaintBoard.setMouseTracking(True)
        self.PaintBoard.setText("")
        self.PaintBoard.setObjectName("PaintBoard")
        self.img_rst = QtWidgets.QLabel(self.centralwidget)
        self.img_rst.setGeometry(QtCore.QRect(680, 155, 440, 440))
        self.img_rst.setText("")
        self.img_rst.setObjectName("img_rst")
        self.PaintBoard2 = PaintBoard(self.centralwidget)
        self.PaintBoard2.setGeometry(QtCore.QRect(680, 155, 440, 440))
        self.PaintBoard2.setMouseTracking(True)
        self.PaintBoard2.setText("")
        self.PaintBoard2.setObjectName("PaintBoard2")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(70, 140, 460, 16))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.line_2 = QtWidgets.QFrame(self.centralwidget)
        self.line_2.setGeometry(QtCore.QRect(670, 140, 460, 16))
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.line_3 = QtWidgets.QFrame(self.centralwidget)
        self.line_3.setGeometry(QtCore.QRect(70, 600, 460, 16))
        self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_3.setObjectName("line_3")
        self.line_4 = QtWidgets.QFrame(self.centralwidget)
        self.line_4.setGeometry(QtCore.QRect(670, 600, 460, 16))
        self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_4.setObjectName("line_4")
        self.line_5 = QtWidgets.QFrame(self.centralwidget)
        self.line_5.setGeometry(QtCore.QRect(60, 150, 20, 461))
        self.line_5.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_5.setObjectName("line_5")
        self.line_6 = QtWidgets.QFrame(self.centralwidget)
        self.line_6.setGeometry(QtCore.QRect(520, 150, 20, 461))
        self.line_6.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_6.setObjectName("line_6")
        self.line_7 = QtWidgets.QFrame(self.centralwidget)
        self.line_7.setGeometry(QtCore.QRect(660, 150, 20, 461))
        self.line_7.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_7.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_7.setObjectName("line_7")
        self.line_8 = QtWidgets.QFrame(self.centralwidget)
        self.line_8.setGeometry(QtCore.QRect(1120, 150, 20, 461))
        self.line_8.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_8.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_8.setObjectName("line_8")
        self.pushButton_undo = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_undo.setEnabled(False)
        self.pushButton_undo.setGeometry(QtCore.QRect(70, 610, 230, 30))
        self.pushButton_undo.setObjectName("pushButton_undo")
        self.pushButton_empty = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_empty.setGeometry(QtCore.QRect(300, 610, 230, 30))
        self.pushButton_empty.setObjectName("pushButton_empty")
        self.pushButton_save2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_save2.setEnabled(False)
        self.pushButton_save2.setGeometry(QtCore.QRect(670, 610, 230, 30))
        self.pushButton_save2.setObjectName("pushButton_save2")
        self.pushButton_mask = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_mask.setGeometry(QtCore.QRect(900, 610, 230, 30))
        self.pushButton_mask.setObjectName("pushButton_mask")
        self.go = QtWidgets.QPushButton(self.centralwidget)
        self.go.setEnabled(False)
        self.go.setGeometry(QtCore.QRect(545, 310, 111, 111))
        self.go.setText("")
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("icon/process.png"), QtGui.QIcon.Normal,
                       QtGui.QIcon.Off)
        self.go.setIcon(icon)
        self.go.setIconSize(QtCore.QSize(111, 111))
        self.go.setObjectName("go")
        self.pushButton_load = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_load.setGeometry(QtCore.QRect(0, 0, 111, 111))
        self.pushButton_load.setText("")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap("icon/load.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pushButton_load.setIcon(icon1)
        self.pushButton_load.setIconSize(QtCore.QSize(80, 80))
        self.pushButton_load.setObjectName("pushButton_load")
        self.pushButton_save = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_save.setEnabled(False)
        self.pushButton_save.setGeometry(QtCore.QRect(110, 0, 111, 111))
        self.pushButton_save.setText("")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap("icon/save.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pushButton_save.setIcon(icon2)
        self.pushButton_save.setIconSize(QtCore.QSize(80, 80))
        self.pushButton_save.setObjectName("pushButton_save")
        self.pushButton_pen = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_pen.setGeometry(QtCore.QRect(370, 0, 111, 111))
        self.pushButton_pen.setText("")
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap("icon/pen.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pushButton_pen.setIcon(icon3)
        self.pushButton_pen.setIconSize(QtCore.QSize(80, 80))
        self.pushButton_pen.setCheckable(True)
        self.pushButton_pen.setChecked(True)
        self.pushButton_pen.setObjectName("pushButton_pen")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(480, 0, 71, 51))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label_7.setFont(font)
        self.label_7.setAlignment(QtCore.Qt.AlignCenter)
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(480, 60, 71, 51))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label_8.setFont(font)
        self.label_8.setAlignment(QtCore.Qt.AlignCenter)
        self.label_8.setObjectName("label_8")
        self.Slider = QtWidgets.QSlider(self.centralwidget)
        self.Slider.setGeometry(QtCore.QRect(560, 75, 121, 22))
        self.Slider.setMinimum(1)
        self.Slider.setMaximum(50)
        self.Slider.setSingleStep(1)
        self.Slider.setPageStep(1)
        self.Slider.setSliderPosition(10)
        self.Slider.setOrientation(QtCore.Qt.Horizontal)
        self.Slider.setObjectName("Slider")
        self.line_9 = QtWidgets.QFrame(self.centralwidget)
        self.line_9.setGeometry(QtCore.QRect(480, 45, 241, 20))
        self.line_9.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_9.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_9.setObjectName("line_9")
        self.line_11 = QtWidgets.QFrame(self.centralwidget)
        self.line_11.setGeometry(QtCore.QRect(480, 100, 241, 20))
        self.line_11.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_11.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_11.setObjectName("line_11")
        self.pushButton_rect = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_rect.setGeometry(QtCore.QRect(740, 0, 101, 111))
        self.pushButton_rect.setText("")
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap("icon/rect.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pushButton_rect.setIcon(icon4)
        self.pushButton_rect.setIconSize(QtCore.QSize(80, 80))
        self.pushButton_rect.setCheckable(True)
        self.pushButton_rect.setObjectName("pushButton_rect")
        self.pushButton_circle = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_circle.setGeometry(QtCore.QRect(840, 0, 101, 111))
        self.pushButton_circle.setText("")
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap("icon/oval.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pushButton_circle.setIcon(icon5)
        self.pushButton_circle.setIconSize(QtCore.QSize(80, 80))
        self.pushButton_circle.setCheckable(True)
        self.pushButton_circle.setObjectName("pushButton_circle")
        self.pushButton_dots = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_dots.setGeometry(QtCore.QRect(940, 0, 101, 111))
        self.pushButton_dots.setText("")
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap("icon/dots.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pushButton_dots.setIcon(icon6)
        self.pushButton_dots.setIconSize(QtCore.QSize(80, 80))
        self.pushButton_dots.setCheckable(True)
        self.pushButton_dots.setObjectName("pushButton_dots")
        self.pushButton_mode = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_mode.setGeometry(QtCore.QRect(240, 0, 111, 111))
        self.pushButton_mode.setText("")
        icon7 = QtGui.QIcon()
        icon7.addPixmap(QtGui.QPixmap("icon/eraser.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pushButton_mode.setIcon(icon7)
        self.pushButton_mode.setIconSize(QtCore.QSize(80, 80))
        self.pushButton_mode.setCheckable(True)
        self.pushButton_mode.setChecked(False)
        self.pushButton_mode.setObjectName("pushButton_mode")
        self.label_9 = QtWidgets.QLabel(self.centralwidget)
        self.label_9.setGeometry(QtCore.QRect(0, 110, 221, 31))
        font = QtGui.QFont()
        font.setFamily("等线")
        font.setPointSize(15)
        self.label_9.setFont(font)
        self.label_9.setAlignment(QtCore.Qt.AlignCenter)
        self.label_9.setObjectName("label_9")
        self.label_10 = QtWidgets.QLabel(self.centralwidget)
        self.label_10.setGeometry(QtCore.QRect(240, 110, 111, 31))
        font = QtGui.QFont()
        font.setFamily("等线")
        font.setPointSize(15)
        self.label_10.setFont(font)
        self.label_10.setAlignment(QtCore.Qt.AlignCenter)
        self.label_10.setObjectName("label_10")
        self.label_11 = QtWidgets.QLabel(self.centralwidget)
        self.label_11.setGeometry(QtCore.QRect(370, 110, 361, 31))
        font = QtGui.QFont()
        font.setFamily("等线")
        font.setPointSize(15)
        self.label_11.setFont(font)
        self.label_11.setAlignment(QtCore.Qt.AlignCenter)
        self.label_11.setObjectName("label_11")
        self.label_12 = QtWidgets.QLabel(self.centralwidget)
        self.label_12.setGeometry(QtCore.QRect(740, 110, 401, 31))
        font = QtGui.QFont()
        font.setFamily("等线")
        font.setPointSize(15)
        self.label_12.setFont(font)
        self.label_12.setAlignment(QtCore.Qt.AlignCenter)
        self.label_12.setObjectName("label_12")
        self.pushButton_black = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_black.setGeometry(QtCore.QRect(550, 0, 81, 51))
        self.pushButton_black.setText("")
        icon8 = QtGui.QIcon()
        icon8.addPixmap(QtGui.QPixmap("icon/black.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pushButton_black.setIcon(icon8)
        self.pushButton_black.setIconSize(QtCore.QSize(81, 51))
        self.pushButton_black.setObjectName("pushButton_black")
        self.pushButton_white = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_white.setGeometry(QtCore.QRect(630, 0, 91, 51))
        self.pushButton_white.setText("")
        icon9 = QtGui.QIcon()
        icon9.addPixmap(QtGui.QPixmap("icon/white.png"), QtGui.QIcon.Normal,
                        QtGui.QIcon.Off)
        self.pushButton_white.setIcon(icon9)
        self.pushButton_white.setIconSize(QtCore.QSize(81, 51))
        self.pushButton_white.setObjectName("pushButton_white")
        self.line_12 = QtWidgets.QFrame(self.centralwidget)
        self.line_12.setGeometry(QtCore.QRect(220, 0, 20, 141))
        self.line_12.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_12.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_12.setObjectName("line_12")
        self.line_13 = QtWidgets.QFrame(self.centralwidget)
        self.line_13.setGeometry(QtCore.QRect(350, 0, 20, 141))
        self.line_13.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_13.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_13.setObjectName("line_13")
        self.line_14 = QtWidgets.QFrame(self.centralwidget)
        self.line_14.setGeometry(QtCore.QRect(720, 0, 20, 141))
        self.line_14.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_14.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_14.setObjectName("line_14")
        self.line_15 = QtWidgets.QFrame(self.centralwidget)
        self.line_15.setGeometry(QtCore.QRect(0, 136, 1201, 16))
        self.line_15.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_15.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_15.setObjectName("line_15")
        self.line_16 = QtWidgets.QFrame(self.centralwidget)
        self.line_16.setGeometry(QtCore.QRect(710, 0, 20, 111))
        self.line_16.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_16.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_16.setObjectName("line_16")
        self.pushButton_seg = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_seg.setEnabled(False)
        self.pushButton_seg.setGeometry(QtCore.QRect(1040, 0, 101, 111))
        self.pushButton_seg.setText("")
        icon10 = QtGui.QIcon()
        icon10.addPixmap(QtGui.QPixmap("icon/seg.png"), QtGui.QIcon.Normal,
                         QtGui.QIcon.Off)
        self.pushButton_seg.setIcon(icon10)
        self.pushButton_seg.setIconSize(QtCore.QSize(80, 80))
        self.pushButton_seg.setObjectName("pushButton_seg")
        self.label_width = QtWidgets.QLabel(self.centralwidget)
        self.label_width.setGeometry(QtCore.QRect(680, 60, 41, 51))
        self.label_width.setAlignment(QtCore.Qt.AlignCenter)
        self.label_width.setObjectName("label_width")
        self.pushButton_geo_black = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_geo_black.setGeometry(QtCore.QRect(1140, 0, 61, 55))
        self.pushButton_geo_black.setText("")
        icon11 = QtGui.QIcon()
        icon11.addPixmap(QtGui.QPixmap("icon/black2.png"), QtGui.QIcon.Normal,
                         QtGui.QIcon.Off)
        self.pushButton_geo_black.setIcon(icon11)
        self.pushButton_geo_black.setIconSize(QtCore.QSize(61, 55))
        self.pushButton_geo_black.setObjectName("pushButton_geo_black")
        self.pushButton_geo_white = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_geo_white.setGeometry(QtCore.QRect(1140, 55, 61, 55))
        self.pushButton_geo_white.setText("")
        icon12 = QtGui.QIcon()
        icon12.addPixmap(QtGui.QPixmap("icon/white2.png"), QtGui.QIcon.Normal,
                         QtGui.QIcon.Off)
        self.pushButton_geo_white.setIcon(icon12)
        self.pushButton_geo_white.setIconSize(QtCore.QSize(61, 55))
        self.pushButton_geo_white.setObjectName("pushButton_geo_white")
        self.label_13 = QtWidgets.QLabel(self.centralwidget)
        self.label_13.setGeometry(QtCore.QRect(1140, 110, 61, 31))
        font = QtGui.QFont()
        font.setFamily("等线")
        font.setPointSize(12)
        self.label_13.setFont(font)
        self.label_13.setAlignment(QtCore.Qt.AlignCenter)
        self.label_13.setObjectName("label_13")
        self.Thanos = QtWidgets.QPushButton(self.centralwidget)
        self.Thanos.setEnabled(False)
        self.Thanos.setGeometry(QtCore.QRect(545, 440, 111, 111))
        self.Thanos.setText("")
        icon13 = QtGui.QIcon()
        icon13.addPixmap(QtGui.QPixmap("icon/snap.jpg"), QtGui.QIcon.Normal,
                         QtGui.QIcon.Off)
        self.Thanos.setIcon(icon13)
        self.Thanos.setIconSize(QtCore.QSize(110, 110))
        self.Thanos.setCheckable(False)
        self.Thanos.setChecked(False)
        self.Thanos.setObjectName("Thanos")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setEnabled(False)
        self.comboBox.setGeometry(QtCore.QRect(546, 595, 110, 21))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.comboBox.setFont(font)
        self.comboBox.setMaxVisibleItems(6)
        self.comboBox.setObjectName("comboBox")
        self.pushButton_add_label = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_add_label.setEnabled(False)
        self.pushButton_add_label.setGeometry(QtCore.QRect(546, 620, 55, 21))
        self.pushButton_add_label.setObjectName("pushButton_add_label")
        self.pushButton_clear_label = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_clear_label.setEnabled(False)
        self.pushButton_clear_label.setGeometry(QtCore.QRect(602, 620, 55, 21))
        self.pushButton_clear_label.setObjectName("pushButton_clear_label")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(546, 553, 110, 40))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.textBrowser.setFont(font)
        self.textBrowser.setObjectName("textBrowser")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)