Beispiel #1
0
class mywindow(QtWidgets.QMainWindow):

    def __init__(self):
            super(mywindow, self).__init__()
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)
            self.setWindowTitle("Converter")

            self.ui.pushButton.clicked.connect(self.btnClicked)

            self.ui.comboBox.addItem("Рублей")
            self.ui.comboBox.addItem("Долларов")
            self.ui.comboBox_2.addItem("Долларов")
            self.ui.comboBox_2.addItem("Рублей")

            self.textbox = self.ui.lineEdit
            self.combobox1 = self.ui.comboBox
            self.combobox2 = self.ui.comboBox_2

    def btnClicked(self):
            textboxValue = int(self.textbox.text())
            comboboxValue1 = self.combobox1.currentText()
            comboboxValue2 = self.combobox2.currentText()
            if comboboxValue1 == "Рублей" and comboboxValue2 == "Долларов":
                self.ui.lineEdit_2.setText(str(textboxValue / 74.35))

            if comboboxValue1 == "Долларов" and comboboxValue2 == "Рублей":
                self.ui.lineEdit_2.setText(str(textboxValue * 74.35))
Beispiel #2
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton_2.clicked.connect(self.openPic)
        self.ui.pushButton_6.clicked.connect(self.esLink)
        self.ui.pushButton_4.clicked.connect(self.showslectedPic)
        self.ui.pushButton_5.clicked.connect(self.showPicresult)

        self.ui.checkBox.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_2.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_3.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_4.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_5.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_6.clicked.connect(self.checkBoxSlection)
        self.ui.pushButton_3.clicked.connect(self.uploadPic)

        self.tempList = [
            self.ui.checkBox, self.ui.checkBox_2, self.ui.checkBox_3,
            self.ui.checkBox_4, self.ui.checkBox_5, self.ui.checkBox_6
        ]
        self.checkSlectedFlage = 0
        self.detectObjection = ''
        self.picName = ''
        self.address = ['', 8000]
        self.address[0] = self.ui.lineEdit.text()

        self.picUploadThread = picUploadThread()
        self.picUploadThread.startWaitRePicFla.connect(self.openWaitTimer)
        self.waitPicThread = waitPicThread(address=tuple(self.address),
                                           Obj=self.ui.textBrowser)
        self.waitPicThread.findPicSignal.connect(self.FindPicture)
Beispiel #3
0
    def __init__(self):
        super(XXX, self).__init__()
        Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.textEdit.textChanged.connect(self.show_text)
        self.pushButton.clicked.connect(self.file)

        # 下面将输出重定向到textBrowser中
        sys.stdout = EmittingStr(textWritten=self.outputWritten)
        sys.stderr = EmittingStr(textWritten=self.outputWritten)
Beispiel #4
0
    def __init__(self, *args, obj=None, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)

        self.threadpool=QThreadPool()

        self.threadHandle(self.looper)
        #self.ui.pushButton.clicked.connect(self.loopHandle)
        self.ui.pushButton.clicked.connect(lambda v: self.threadHandle(self.looper))
        self.ui.pushButton_2.clicked.connect(lambda v: self.threadHandle(self.scan))
class App(QMainWindow):
    def __init__(self, parent=None):
        super(App, self).__init__(parent)
        self.download_path = ""
        self.zip = 0
        self.rar = 0
        self.z7 = 0

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.pushButton.clicked.connect(self.start_click)
        self.ui.pushButton_2.clicked.connect(qApp.quit)
        self.ui.pushButton_3.clicked.connect(self.browse_click)
        self.ui.checkBox.stateChanged.connect(self.file_extension)
        self.ui.checkBox_2.stateChanged.connect(self.file_extension)
        self.ui.checkBox_3.stateChanged.connect(self.file_extension)

    def start_click(self):
        if self.download_path != "":
            main = MainScript()
            main.main(self.download_path, self.zip, self.rar, self.z7)
            dlg = Dialog()
            dlg.dialog_change("Processing completed")
            dlg.show()
            dlg.exec_()
        else:
            dlg = Dialog()
            dlg.dialog_change("Please specify the download folder path")
            dlg.show()
            dlg.exec_()

    def browse_click(self):
        path = str(QFileDialog.getExistingDirectory(self, "Select Directory"))
        self.ui.lineEdit.setText(path)
        self.download_path = self.ui.lineEdit.text()

    def file_extension(self):
        if self.ui.checkBox.isChecked():
            self.zip = 1
        else:
            self.zip = 0

        if self.ui.checkBox_2.isChecked():
            self.rar = 1
        else:
            self.rar = 0

        if self.ui.checkBox_3.isChecked():
            self.z7 = 1
        else:
            self.z7 = 0
Beispiel #6
0
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setWindowTitle("Temperature")

        self.ui.pushButton.clicked.connect(self.btnClicked)

        self.first = self.ui.lineEdit
        self.second = self.ui.lineEdit_2
        self.third = self.ui.lineEdit_3
        self.fourth = self.ui.lineEdit_4
        self.fifth = self.ui.lineEdit_5
Beispiel #7
0
    def __init__(self):
            super(mywindow, self).__init__()
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)
            self.setWindowTitle("Converter")

            self.ui.pushButton.clicked.connect(self.btnClicked)

            self.ui.comboBox.addItem("Рублей")
            self.ui.comboBox.addItem("Долларов")
            self.ui.comboBox_2.addItem("Долларов")
            self.ui.comboBox_2.addItem("Рублей")

            self.textbox = self.ui.lineEdit
            self.combobox1 = self.ui.comboBox
            self.combobox2 = self.ui.comboBox_2
    def __init__(self, parent=None):
        super(App, self).__init__(parent)
        self.download_path = ""
        self.zip = 0
        self.rar = 0
        self.z7 = 0

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.pushButton.clicked.connect(self.start_click)
        self.ui.pushButton_2.clicked.connect(qApp.quit)
        self.ui.pushButton_3.clicked.connect(self.browse_click)
        self.ui.checkBox.stateChanged.connect(self.file_extension)
        self.ui.checkBox_2.stateChanged.connect(self.file_extension)
        self.ui.checkBox_3.stateChanged.connect(self.file_extension)
Beispiel #9
0
    def __init__(self, parent=None):
        super(MyForm, self).__init__(parent)
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        QtCore.QObject.connect(self.ui.connectbut, QtCore.SIGNAL('clicked()'),
                               self.connectarduino)
        self.ui.ctrl_MAX.toggled.connect(self.maxtoggle)
        self.ser = None  #declare arduino
        #create a pyqtgraph for plotting
        self.p = pg.plot()
        self.p.setWindowTitle('live plot from serial')
        self.p.addLegend()
        self.p.setTitle('Python-Arduino Temp Controller')
        self.p.setLabel('bottom', text='Time', units='s')
        self.p.setLabel('left', text='Temp', units='oC')
        self.curve_max = self.p.plot(pen='r', name='MAX31855')
        self.curve_ds = self.p.plot(pen='g', name='DS18B20')
        #self.curve_mlx = self.p.plot(pen='b', name='MLX90614')
        #to do add a line for setpoint
        self.data_max = []
        self.data_ds = []
        self.data_mlx = []
        self.data_time = []
        self.timer = QtCore.QTimer(self)
        QtCore.QObject.connect(self.timer, QtCore.SIGNAL('timeout()'),
                               self.updategraph)
        #declare factor of ctrl cmd
        self.ctrlsys = 'a'
        self.ctrlstate = '0'
        self.ctrltune = '0'
        self.ctrlsetpoint = 0.00
        self.ctrlkp = 0.00
        self.ctrlti = 0.00
        self.ctrltd = 0.00
        self.ctrlcmd = "a,0,0,0,0,0,0,"
        #declare factors for autotune
        self.t0temp = 0
        self.t0 = 0
        self.t1temp = 0
        self.t1 = 0
        self.t2temp = 0
        self.t2 = 0
        #declare for xml
        self.xml_root = None
Beispiel #10
0
class MainWindow(QMainWindow,Ui_MainWindow):
    def __init__(self, *args, obj=None, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)

        self.threadpool=QThreadPool()

        self.threadHandle(self.looper)
        #self.ui.pushButton.clicked.connect(self.loopHandle)
        self.ui.pushButton.clicked.connect(lambda v: self.threadHandle(self.looper))
        self.ui.pushButton_2.clicked.connect(lambda v: self.threadHandle(self.scan))

    def scan(self):
        cmd=os.popen("timeout -s INT 10s hcitool lescan")
        print(cmd.read())


    def scanHandle(self):
        worker=Worker(self.scan)
        self.threadpool.start(worker)

    def threadHandle(self,fun):
        worker=Worker(fun)
        self.threadpool.start(worker)
        worker.signals.finished.connect(self.finished)
    

    def loopHandle(self):
        worker=Worker(self.looper)
        worker.signals.finished.connect(self.finished)

        self.threadpool.start(worker)
        
    def finished(self):
        print("Done!!!!!!!!!!!!!")

    def looper(self):
        count=0
        while count!=100:
            print("Hello" + str(self.threadpool.activeThreadCount()))
            count+=1
            time.sleep(0.1)
Beispiel #11
0
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setWindowTitle("Run")

        self.ui.pushButton.clicked.connect(self.btnClicked)

        self.firstday = self.ui.lineEdit
        self.secondday = self.ui.lineEdit_2
        self.thirdday = self.ui.lineEdit_3
        self.fourthday = self.ui.lineEdit_4
        self.fifthday = self.ui.lineEdit_5

    def btnClicked(self):
        firstday = int(self.firstday.text())
        secondday = int(self.secondday.text())
        thirdday = int(self.thirdday.text())
        fourthday = int(self.fourthday.text())
        fifthday = int(self.fifthday.text())

        days = [firstday, secondday, thirdday, fourthday, fifthday]
        allrun = firstday + secondday + thirdday + fourthday + fifthday
        amountrun = allrun / 5

        minrun = days[0]
        for i in range(0, 5):
            if minrun > days[i]:
                minrun = days[i]

        maxrun = days[0]

        for i in range(0, 5):
            if maxrun < days[i]:
                maxrun = days[i]

        self.ui.lineEdit_6.setText(str(allrun))
        self.ui.lineEdit_7.setText(str(amountrun))

        self.ui.lineEdit_8.setText(str(minrun))
        self.ui.lineEdit_9.setText(str(maxrun))
Beispiel #12
0
    def __init__(self):
        super(MyUI, self).__init__()
        self.ui = Ui_MainWindow()
        self.setupUi(self)
        sleep(1)

        self.pushButton.clicked.connect(self.get_Save_Path)
        self.pushButton_2.clicked.connect(self.get_URL)
        self.pushButton_3.clicked.connect(self.Start)
        self.pushButton_4.clicked.connect(self.About)
        self.pushButton_5.clicked.connect(self.Stop)
Beispiel #13
0
 def __init__(self, parent=None):
     QtGui.QWidget.__init__(self, parent)
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
     self.nn = captcha.Net()
     QtCore.QObject.connect(self.ui.toolButtonBuscarCarpeta, QtCore.SIGNAL("clicked()"), self.folder_dialog)
     QtCore.QObject.connect(self.ui.toolButtonEntrenar,QtCore.SIGNAL("clicked()"), self.train)
     QtCore.QObject.connect(self.ui.toolButtonBuscarArchivo,QtCore.SIGNAL("clicked()"), self.file_dialog)
     QtCore.QObject.connect(self.ui.toolButtonCargar, QtCore.SIGNAL("clicked()"), self.show_captcha)
     QtCore.QObject.connect(self.ui.toolButtonDescifrar, QtCore.SIGNAL("clicked()"), self.process)
     QtCore.QObject.connect(self.ui.toolButtonModificar, QtCore.SIGNAL("clicked()"), self.modify)
     QtCore.QObject.connect(self.ui.pushButtonSalir, QtCore.SIGNAL("clicked()"), self.salir)
Beispiel #14
0
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setWindowTitle("Calculator")

        self.ui.pushButton.clicked.connect(self.btnClicked_1)
        self.ui.pushButton_2.clicked.connect(self.btnClicked_2)
        self.ui.pushButton_3.clicked.connect(self.btnClicked_3)
        self.ui.pushButton_4.clicked.connect(self.btnClicked_4)
        self.ui.pushButton_5.clicked.connect(self.btnClicked_5)
        self.ui.pushButton_6.clicked.connect(self.btnClicked_6)
        self.ui.pushButton_7.clicked.connect(self.btnClicked_7)
        self.ui.pushButton_8.clicked.connect(self.btnClicked_8)
        self.ui.pushButton_9.clicked.connect(self.btnClicked_9)
        self.ui.pushButton_10.clicked.connect(self.btnClicked_10)
        self.ui.pushButton_11.clicked.connect(self.btnClicked_11)
        self.ui.pushButton_12.clicked.connect(self.btnClicked_12)
        self.ui.pushButton_13.clicked.connect(self.btnClicked_13)
        self.ui.pushButton_14.clicked.connect(self.btnClicked_14)
        self.ui.pushButton_15.clicked.connect(self.btnClicked_15)
        self.ui.pushButton_16.clicked.connect(self.btnClicked_16)
        self.ui.pushButton_17.clicked.connect(self.btnClicked_17)
    def __init__(self, MainWindow):
        super().__init__(MainWindow)
        self.UI_obj = Ui_MainWindow()
        self.UI_obj.setupUi(MainWindow)
        self.color_dict = {'Blue': (0, 0, 255), 'Red': (255, 0, 0), 'Orange': (255, 127, 25)}
        self.UI_obj.fullimg = PainterLabel(5)
        self.UI_obj.fullimg.setAlignment(QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        self.UI_obj.patch_group = {}
        self.UI_obj.HR_group = {}
        self.UI_obj.set_root.clicked.connect(self.setRoot)
        self.UI_obj.show_Fullimg.clicked.connect(self.show_Full_img)
        self.UI_obj.set_Saveroot_bt.clicked.connect(self.setSave)
        self.UI_obj.crop_viewbt.clicked.connect(self.cropView)
        self.UI_obj.save_finalbt.clicked.connect(self.saveAll_results)
        self.UI_obj.patchTab.currentChanged['int'].connect(self.add_Tab)
        self.UI_obj.tab_1 = QtWidgets.QScrollArea(self.UI_obj.patchTab)
        self.UI_obj.tab_2 = QtWidgets.QScrollArea(self.UI_obj.patchTab)
        self.UI_obj.patchTab.addTab(self.UI_obj.tab_1, 'Patch Group 1')
        self.UI_obj.patchTab.addTab(self.UI_obj.tab_2, '+')
        self.UI_obj.fullimg.installEventFilter(self)
        self.UI_obj.patchTab.installEventFilter(self)
        self.UI_obj.fullimg.drawRecFlag = False

        self.UI_obj.sub_dir_list.activated[str].connect(self.onActivated)
Beispiel #16
0
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setWindowTitle("Temperature")

        self.ui.pushButton.clicked.connect(self.btnClicked)

        self.first = self.ui.lineEdit
        self.second = self.ui.lineEdit_2
        self.third = self.ui.lineEdit_3
        self.fourth = self.ui.lineEdit_4
        self.fifth = self.ui.lineEdit_5

    def btnClicked(self):
        first = int(self.first.text())
        second = int(self.second.text())
        third = int(self.third.text())
        fourth = int(self.fourth.text())
        fifth = int(self.fifth.text())

        amount = (first + second + third + fourth + fifth) / 5
        self.ui.lineEdit_6.setText(str(amount))
 def __init__(self):
     super(mywindow, self).__init__()
     self.ui = Ui_MainWindow()
     self.ui.setupUi(self)
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
Beispiel #19
0
from PyQt5 import QtCore, QtGui, QtWidgets

from untitled import Ui_MainWindow

import sys
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    
    window = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()

    ui.setupUi(window)
    ui.retranslateUi(window)
    
    window.showMaximized()

    try:
        sys.exit(app.exec_())
    except:
        print("exiting")
        sys.exit(1)
Beispiel #20
0
        self.pushButton_13.setText("")
        self.pushButton_13.setObjectName("pushButton_13")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))


class Durdom(Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Ui_MainWindow()  # Durdom()
    ex.show()
    sys.exit(app.exec())
Beispiel #21
0
class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MyForm, self).__init__(parent)
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        QtCore.QObject.connect(self.ui.connectbut, QtCore.SIGNAL('clicked()'),
                               self.connectarduino)
        self.ui.ctrl_MAX.toggled.connect(self.maxtoggle)
        self.ser = None  #declare arduino
        #create a pyqtgraph for plotting
        self.p = pg.plot()
        self.p.setWindowTitle('live plot from serial')
        self.p.addLegend()
        self.p.setTitle('Python-Arduino Temp Controller')
        self.p.setLabel('bottom', text='Time', units='s')
        self.p.setLabel('left', text='Temp', units='oC')
        self.curve_max = self.p.plot(pen='r', name='MAX31855')
        self.curve_ds = self.p.plot(pen='g', name='DS18B20')
        #self.curve_mlx = self.p.plot(pen='b', name='MLX90614')
        #to do add a line for setpoint
        self.data_max = []
        self.data_ds = []
        self.data_mlx = []
        self.data_time = []
        self.timer = QtCore.QTimer(self)
        QtCore.QObject.connect(self.timer, QtCore.SIGNAL('timeout()'),
                               self.updategraph)
        #declare factor of ctrl cmd
        self.ctrlsys = 'a'
        self.ctrlstate = '0'
        self.ctrltune = '0'
        self.ctrlsetpoint = 0.00
        self.ctrlkp = 0.00
        self.ctrlti = 0.00
        self.ctrltd = 0.00
        self.ctrlcmd = "a,0,0,0,0,0,0,"
        #declare factors for autotune
        self.t0temp = 0
        self.t0 = 0
        self.t1temp = 0
        self.t1 = 0
        self.t2temp = 0
        self.t2 = 0
        #declare for xml
        self.xml_root = None

    @QtCore.pyqtSlot(bool)
    def maxtoggle(self, checked):
        if not checked:
            #send turn off on max pid to arduino
            try:
                self.ser.open()
            except:
                pass
            self.ctrlcmd = 'a,0,0'
            self.ser.write(self.ctrlcmd.encode())
            self.timer.stop()
            self.cleargraph()
            #print "turn off MAx"
        elif checked:
            #send turn on to max pid to arduino
            try:
                self.ser.open()
            except:
                #print "already open"
                pass
            self.ctrlcmd = 'a,1,0,%s,%s,%s,%s' % (
                str(self.ui.sp_MAX.value()), str(self.ui.MAX_kc.value()),
                str(self.ui.MAX_ti.value()), str(self.ui.MAX_td.value()))
            #print self.ctrlcmd
            #self.ctrlcmd = 'a,1,0,%s,%s,%s,%s' % (self.ui.sp_MAX.value(), self.ui.MAX_kc.value(), self.ui.MAX_ti.value(), self.ui.MAX_td.value())
            self.ser.write(self.ctrlcmd.encode())
            #start new plotting
            self.timer.stop()
            self.timer.start(100)

            #print "turn on MAX"

    def connectarduino(self):
        try:
            port = str(self.ui.comlisttext.toPlainText())
            self.ser = serial.Serial(port, 9600)
            self.ui.connectbut.setText("Connected")
            self.ui.connectbut.setEnabled(False)
            self.ui.groupBox.setEnabled(True)
            self.ui.groupBox_2.setEnabled(True)
            self.timer.start(1000)
        except:
            print('failed')

    def updategraph(self):
        try:
            self.ser.open()
        except:
            #print "already open"
            pass
        #global curve_max, curve_dx, curve_mlx, data_max, data_ds, data_mlx, curve_time, data_time
        line = self.ser.readline().rstrip().split(",")
        #print line
        #update label in the gui
        self.ui.MAX_raw.setText(line[3])
        maxtemp = float(line[3]) + self.ui.MAX_calib.value()
        self.ui.MAX_Temp.setText(str(maxtemp))
        self.ui.ds_raw.setText(line[5])
        dstemp = float(line[5]) + self.ui.ds_calib.value()
        self.ui.ds_Temp.setText(str(dstemp))
        #plot the calibrated temperature
        self.data_time.append(float(line[1]) / 1000.0)
        self.data_max.append(maxtemp)
        self.data_ds.append(dstemp)
        #self.data_mlx.append(float(line[7]))
        ydata_time = np.array(self.data_time, dtype='float64')
        ydata_max = np.array(self.data_max, dtype='float64')
        ydata_ds = np.array(self.data_ds, dtype='float64')
        #ydata_mlx = np.array(self.data_mlx, dtype='float64')
        self.curve_max.setData(x=ydata_time, y=ydata_max)
        self.curve_ds.setData(x=ydata_time, y=ydata_ds)
Beispiel #22
0
class Window(QMainWindow):

    def __init__(self):

        super().__init__()
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)
        self.show()
        #les buttons de graph
        self.ui.pushButton_16.hide()
        #self.ui.pushButton_17.hide()
        self.ui.pushButton_17.clicked.connect(self.showgragh)
        #manuelle de utilasation 1
        self.path = r"aide1.pdf"
        self.url = bytearray(QUrl().fromLocalFile(self.path).toEncoded()).decode()
        self.text = "<a href={}>></a>".format(self.url)
        self.ui.pushButton.setText(self.text+"?")
        self.ui.pushButton.setOpenExternalLinks(True)
        #manuelle de utilasation 2
        self.path = r"aide2.pdf"
        self.url = bytearray(QUrl().fromLocalFile(self.path).toEncoded()).decode()
        self.text = "<a href={}>></a>".format(self.url)
        self.ui.pushButton_14.setText(self.text+"?")
        self.ui.pushButton_14.setOpenExternalLinks(True)
        #manuelle de utilasation 3
        self.path = r"aide3.pdf"
        self.url = bytearray(QUrl().fromLocalFile(self.path).toEncoded()).decode()
        self.text = "<a href={}>></a>".format(self.url)
        self.ui.pushButton_15.setText(self.text+"?")
        self.ui.pushButton_15.setOpenExternalLinks(True)

        #griser les buttons
        self.ui.ValiderNbrAdn.setEnabled(False)
        self.ui.pushButton_7.setEnabled(False)
        self.ui.pushButton_13.setEnabled(False)
        self.ui.pushButton_2.setEnabled(False)
        self.ui.pushButton_3.setEnabled(False)
        self.ui.pushButton_4.setEnabled(False)
        self.ui.pushButton_5.setEnabled(False)
        self.ui.pushButton_6.setEnabled(False)
        self.ui.pushButton_8.setEnabled(False)
        self.ui.lineEdit.setPlaceholderText('#nuc')
        self.ui.lineEdit_2.setPlaceholderText('#sec')
        self.ui.listWidget_2.hide()
        # le button de sauvgarde du resultat
        self.ui.pushButton_9.clicked.connect(self.saveWindows)
        #les buttons des fonctions ARN
        self.btn_grp4= QButtonGroup()
        self.btn_grp4.setExclusive(True)
        self.btn_grp4.addButton(self.ui.pushButton_10)
        self.btn_grp4.addButton(self.ui.pushButton_11)
        self.btn_grp4.addButton(self.ui.pushButton_12)
        self.btn_grp4.buttonClicked.connect(self.FONCTIONS_ARN)
        #les buttons des fonctions ADN
        self.btn_grp3= QButtonGroup()
        self.btn_grp3.setExclusive(True)
        self.btn_grp3.addButton(self.ui.pushButton_13)
        self.btn_grp3.addButton(self.ui.pushButton_2)
        self.btn_grp3.addButton(self.ui.pushButton_3)
        self.btn_grp3.addButton(self.ui.pushButton_4)
        self.btn_grp3.addButton(self.ui.pushButton_5)
        self.btn_grp3.addButton(self.ui.pushButton_6)
        self.btn_grp3.addButton(self.ui.pushButton_8)
        self.btn_grp3.buttonClicked.connect(self.FONCTIONS_ADN)
        # les radio buttons un seul sequence plusius ADN
        self.btn_grpRADIO = QButtonGroup()
        self.btn_grpRADIO.setExclusive(True)
        self.btn_grpRADIO.addButton(self.ui.radioButton_4)# tts les sequences
        self.btn_grpRADIO.addButton(self.ui.radioButton_3)# un seule sequence
        self.btn_grpRADIO.buttonClicked.connect(self.RADIOSEQUENCE)
        #les botton de insertion de ADN
        self.btn_grp = QButtonGroup()
        self.btn_grp.setExclusive(True)
        self.btn_grp.addButton(self.ui.ValiderNbrAdn)
        self.btn_grp.addButton(self.ui.pushButton_7)
        self.btn_grp.buttonClicked.connect(self.ADN_ENTRIE)
        ########################### group de radio buttons
        self.btn_grp2 = QButtonGroup()
        self.btn_grp2.setExclusive(True)
        self.btn_grp2.addButton(self.ui.radioButton)
        self.btn_grp2.addButton(self.ui.radioButton_2)
        self.btn_grp2.buttonClicked.connect(self.RADION_ADN_ENTRIE)
        #####################################################################
        # dialog de sauvgarde les resultats
        self.d = QDialog()
        self.d.setWindowTitle("Sauvgarde")
        self.d.resize(340, 400)
        self.d.setStyleSheet("background-color: #636363;")
        self.centralwidget = QWidget(self.d)
        self.centralwidget.setObjectName("centralwidget")
        self.groupBox_9 = QGroupBox(self.centralwidget)
        self.groupBox_9.setGeometry(QtCore.QRect(50, 80, 240, 231))
        self.groupBox_9.setStyleSheet("QGroupBox \n""{\n""\n""color:#c2c2c2;\n""margin: 0em;\n""  border: 1px solid #c2c2c2; \n""  border-radius: 8px;\n""} \n""")
        self.groupBox_9.setTitle("")
        self.groupBox_9.setObjectName("groupBox_9")
        self.label_8 = QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(70, 70, 81, 16))
        self.label_8.setStyleSheet("font: 75 10pt \"Tw Cen MT\";\n""color:#c2c2c2;")
        self.label_8.setObjectName("label_8")
        self.save = QPushButton(self.centralwidget)
        self.save.setGeometry(QtCore.QRect(140, 320, 50, 23))
        self.save.setStyleSheet("color:\"white\";\n""background-color:#d50000;")
        self.save.setObjectName("save")
        self.checkBox_2 = QCheckBox(self.centralwidget)
        self.checkBox_2.setGeometry(QtCore.QRect(90, 110, 151, 21))
        self.checkBox_2.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_2.setObjectName("checkBox_2")
        self.checkBox_3 = QCheckBox(self.centralwidget)
        self.checkBox_3.setGeometry(QtCore.QRect(90, 130, 151, 21))
        self.checkBox_3.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_3.setObjectName("checkBox_3")
        self.checkBox_4 = QCheckBox(self.centralwidget)
        self.checkBox_4.setGeometry(QtCore.QRect(90, 150, 151, 21))
        self.checkBox_4.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_4.setObjectName("checkBox_4")
        self.checkBox_5 = QCheckBox(self.centralwidget)
        self.checkBox_5.setGeometry(QtCore.QRect(90, 170, 151, 21))
        self.checkBox_5.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_5.setObjectName("checkBox_5")
        self.checkBox_6 = QCheckBox(self.centralwidget)
        self.checkBox_6.setGeometry(QtCore.QRect(90, 190, 151, 21))
        self.checkBox_6.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_6.setObjectName("checkBox_6")
        self.checkBox_7 = QCheckBox(self.centralwidget)
        self.checkBox_7.setGeometry(QtCore.QRect(90, 210, 191, 21))
        self.checkBox_7.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_7.setObjectName("checkBox_7")
        self.checkBox_8 = QCheckBox(self.centralwidget)
        self.checkBox_8.setGeometry(QtCore.QRect(90, 230, 191, 21))
        self.checkBox_8.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_8.setObjectName("checkBox_8")
        self.checkBox_9 = QCheckBox(self.centralwidget)
        self.checkBox_9.setGeometry(QtCore.QRect(90, 250, 191, 21))
        self.checkBox_9.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_9.setObjectName("checkBox_9")
        ###########les noms des widgets
        self.label_8.setText( "Sauvegrader:")
        self.save.setText( "Valider")
        self.checkBox_2.setText( "ADN Reverse")
        self.checkBox_3.setText( "Frequence Bn ADN")
        self.checkBox_4.setText( "Frequence codons")
        self.checkBox_5.setText( "%GC")
        self.checkBox_6.setText( " Sequences ARN")
        self.checkBox_7.setText( "Sequence ARN apres epissage")
        self.checkBox_8.setText( "Sequences proteique")
        self.checkBox_9.setText( "La masse protéique")
        self.save.clicked.connect(self.save_resultat)
    def showgragh(self):
        def delet_file(namefile):
             if os.path.isfile(namefile):
                 os.remove(namefile)
             else:    ## Show an error ##
                 print("Error: %s file not found" % namefile)
        def write_result(result,nomfichier):#this methode is to creat a file that contain the result
            RFILE = open(nomfichier,'a')
            RFILE.write(result)
            RFILE.close()
        ######################pour designer plot
        if self.ui.textBrowser_7.toPlainText()!='':
            delet_file("nuc.txt")
            write_result(self.ui.textBrowser_7.toPlainText()+"\n","nuc.txt")
            write_result(self.ui.textBrowser_6.toPlainText()+"\n","nuc.txt")
            write_result(self.ui.textBrowser_4.toPlainText()+"\n","nuc.txt")
            write_result(self.ui.textBrowser_5.toPlainText()+"\n","nuc.txt")
            self.canvas = Canvas(self, width=8, height=4)
            self.canvas.show()
            self.ui.pushButton_16.show()
            self.ui.pushButton_16.clicked.connect(self.hidegraph)
    def hidegraph(self):
        self.canvas.hide()
    ############################################################################
    def saveWindows(self):
        self.d.exec_()
    # sauvgarder les resultats
    ############################################################################
    def save_resultat(self):
        def write_result(result,nomfichier):#this methode is to creat a file that contain the result
            RFILE = open(nomfichier,'a')
            RFILE.write(result)
            RFILE.close()
        #adn inverse
        def date():# retourner la date
            now = datetime.datetime.now()
            return str(now.strftime("%Y-%m-%d %H:%M:%S"))

        write_result("la date :"+date()+"\n","fichier_resultat.txt")
        if self.ui.radioButton_4.isChecked()==True and self.ui.textBrowser_3.toPlainText()!='':
            write_result("Sequence ADN:"+self.ui.textBrowser_3.toPlainText()+"\n","fichier_resultat.txt")
        else:
            adn_resultTAB=self.ui.textEdit.toPlainText().split("\n")
            adn_result=adn_resultTAB[0]
            write_result("Sequence ADN:"+adn_result+"\n","fichier_resultat.txt")
            pass
        if self.checkBox_2.isChecked():
            if self.ui.textEdit_4.toPlainText()!='':
                write_result("ADN inverse : "+self.ui.textEdit_4.toPlainText()+"\n","fichier_resultat.txt")#adn inversse
                pass
            pass
        if self.checkBox_3.isChecked():
            if self.ui.textBrowser_4.toPlainText()!='':
                write_result("Frequences des bases : \n","fichier_resultat.txt")
                write_result("G : "+self.ui.textBrowser_4.toPlainText()+"\n","fichier_resultat.txt")#G
                write_result("C : "+self.ui.textBrowser_5.toPlainText()+"\n","fichier_resultat.txt")#C
                write_result("A : "+self.ui.textBrowser_7.toPlainText()+"\n","fichier_resultat.txt")#A
                write_result("T : "+self.ui.textBrowser_6.toPlainText()+"\n","fichier_resultat.txt")#T
                pass
            pass
        if self.checkBox_4.isChecked():
            if self.ui.textBrowser_2.toPlainText()!='':
                write_result("Frequence de L ADN codants est :"+self.ui.textBrowser_2.toPlainText()+"\n","fichier_resultat.txt")# Frequence codons
                pass
            pass
        if self.checkBox_5.isChecked():
            if self.ui.textBrowser.toPlainText()!='':
                write_result("Taux de GC dans la sequence est :"+self.ui.textBrowser.toPlainText()+"\n","fichier_resultat.txt")#%GC
                pass
            pass
        if self.checkBox_6.isChecked():
            if self.ui.textEdit_3.toPlainText()!='':
                write_result("Sequence de ARN est :"+self.ui.textEdit_3.toPlainText()+"\n","fichier_resultat.txt")#Sequences ARN
                pass
            pass
        if self.checkBox_7.isChecked():
            if self.ui.textEdit_2.toPlainText()!='':
                write_result("Sequence ARN apres l'eppisage est: "+self.ui.textEdit_2.toPlainText()+"\n","fichier_resultat.txt")#Sequence ARN apres epissage
                pass
            pass
        if self.checkBox_8.isChecked():
            if self.ui.textBrowser_9.toPlainText()!='':
                write_result("Sequence proteique est: "+self.ui.textBrowser_9.toPlainText(),"fichier_resultat.txt")#Sequences proteique
                pass
            pass
        if self.checkBox_9.isChecked():
            if self.ui.textBrowser_8.toPlainText()!='':
                write_result("Masse proteique est: "+self.ui.textBrowser_8.toPlainText()+"\n","fichier_resultat.txt")#La masse protéique
                pass
            pass
        write_result("############################################################\n","fichier_resultat.txt")
        self.d.hide()
    ############################################################################
    #################### les fonctions sur ARN #################################
    def FONCTIONS_ARN(self,btn):
        # fonctions de read FASTA fichier
        def readFASTA(filename):
             with open(filename) as file:
                return (file.read().split('>')[1:])

        def read_FASTA_entries(filename):
            return[seq.partition('\n')for seq in readFASTA(filename)]

        def final_FASTA(filename):
            return[seq[2].replace('\n','') for seq in read_FASTA_entries(filename)]
        ############################################################## dictionaire des acides aminnees
        acide_aminee_MASS_TABLE2 = {
        'Ala': 71.03711,
        'Cys': 103.00919,
        'Asp': 115.02694,
        'Glu': 129.04259,
        'Phe': 147.06841,
        'Gly': 57.02146,
        'His': 137.05891,
        'Ile': 113.08406,
        'Lys': 128.09496,
        'Leu': 113.08406,
        'Met': 131.04049,
        'Asn': 114.04293,
        'Pro': 97.05276,
        'Gln': 128.05858,
        'Arg': 156.10111,
        'Ser': 87.03203,
        'Thr': 101.04768,
        'Val': 99.06841,
        'Trp': 186.07931,
        'Tyr': 163.06333,
        'Urp': 157.01035
        }
        ###################################################################### le dictionaire des ARN codons
        RNA_codon_tabl={'UUU': 'Phe', 'UCU': 'Ser', 'UAU': 'Tyr', 'UGU': 'Cys' , 'UUC': 'Phe', 'UCC': 'Ser', 'UAC': 'Tyr', 'UGC': 'Cys' ,
        'UUA': 'Leu', 'UCA': 'Ser', 'UAA': '---', 'UGA': '---', 'UUG': 'Leu', 'UCG': 'Ser', 'UAG': '---', 'UGG': 'Urp',
        'CUU': 'Leu', 'CCU': 'Pro', 'CAU': 'His', 'CGU': 'Arg', 'CUC': 'Leu', 'CCC': 'Pro', 'CAC': 'His', 'CGC': 'Arg',
        'CUA': 'Leu', 'CCA': 'Pro', 'CAA': 'Gln', 'CGA': 'Arg', 'CUG': 'Leu', 'CCG': 'Pro', 'CAG': 'Gln', 'CGG': 'Arg',
        'AUU': 'Ile', 'ACU': 'Thr', 'AAU': 'Asn', 'AGU': 'Ser', 'AUC': 'Ile', 'ACC': 'Thr', 'AAC': 'Asn', 'AGC': 'Ser',
        'AUA': 'Ile', 'ACA': 'Thr', 'AAA': 'Lys', 'AGA': 'Arg', 'AUG': 'Met', 'ACG': 'Thr', 'AAG': 'Lys', 'AGG': 'Arg',
        'GUU': 'Val', 'GCU': 'Ala', 'GAU': 'Asp', 'GGU': 'Gly', 'GUC': 'Val', 'GCC': 'Ala', 'GAC': 'Asp', 'GGC': 'Gly',
        'GUA': 'Val', 'GCA': 'Ala', 'GAA': 'Glu', 'GGA': 'Gly', 'GUG': 'Val', 'GCG': 'Ala', 'GAG': 'Glu', 'GGG': 'Gly'}
        if self.ui.textEdit_3.toPlainText()!='':
            arn_resultTAB=self.ui.textEdit_3.toPlainText().split("\n")
            if self.ui.textEdit_2.toPlainText()!='':
                arn_result=self.ui.textEdit_2.toPlainText()
            else:
                arn_result=arn_resultTAB[0]
                pass
            ########################################################## la masse proteique
            # message box pour effecuter l epissage avant  de calculer la masse ou avant la traduction de ARN en proteine
            if self.ui.textEdit_2.toPlainText()=='' and (btn.text()=='Calculer la masse protéique' or btn.text()=='Transcription ARN en protéines'):
                buttonReply = QMessageBox.question(self, "Attention!", "vous devez effectuer l'epissage avant!!", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
                if buttonReply == QMessageBox.Yes:
                    print('Yes')

                    ######################
                    try:
                        # ouvrir le fichier des introns format FASTA
                        filename = QFileDialog.getOpenFileName(self, 'Ouvrir le fichier des introns  (FASTA) ', os.getenv('HOME'))
                        FASTA_introns=final_FASTA(filename[0])
                        def epissage(ARN,introns):
                            result = ''
                            for intron in introns:
                                ARN = ARN.replace(intron, '')
                            return ARN
                        self.ui.textEdit_2.setText(str(epissage(arn_result,FASTA_introns)))
                    except Exception as e:
                        print('Exception',str(e))
                    arn_result=str(epissage(arn_result,FASTA_introns))
                    print(arn_result)
                    ######################
                else:
                    print('No')
                pass
            ####################################################### Calculer la masse protéique
            if btn.text()=='Calculer la masse protéique':
                print('Calculer la masse protéique')
                if self.ui.textBrowser_9.toPlainText()!='':
                    print('fddf')
                    prt_masse=''
                    masse=0
                    for x in range(0,len(arn_result)-len(arn_result)%3,3):
                        three_nuc=arn_result[x:x+3]
                        if x!=len(arn_result)-3:
                            if three_nuc=="UAA" or three_nuc=="UGA" or three_nuc=="UAG":
                                break
                            else:
                                #prt_masse=prt_masse+RNA_codon_tabl.get(three_nuc)
                                masse=masse+acide_aminee_MASS_TABLE2.get(RNA_codon_tabl.get(three_nuc))
                                pass
                            pass
                        pass
                    #masse=0
                    #for value in range(0,len(prt_masse),3):
                        #acide_aminee=prt_masse[value:value+3]
                        #print(acide_aminee)
                        #masse=masse+acide_aminee_MASS_TABLE2.get(acide_aminee)

                        #pass
                    self.ui.textBrowser_8.setText(str(masse))
            ########################################################### transcription arn en proteine
            if btn.text()=='Transcription ARN en protéines':
                prt=''
                for x in range(0,len(arn_result)-len(arn_result)%3,3):
                    three_nuc=arn_result[x:x+3]
                    if x!=len(arn_result)-3:
                        if three_nuc=="UAA" or three_nuc=="UGA" or three_nuc=="UAG":
                            prt=prt+"STOP"+"\n"
                            break
                        else:
                            prt=prt+RNA_codon_tabl.get(three_nuc)+"--"
                            pass
                        pass
                    pass
                self.ui.textBrowser_9.setText(prt)
                print('Transcription ARN en protéines')
            ############################################################## effctuer l epissage
            if btn.text()=='Effectuer l\'épissage d\'ARN':
                print('Effectuer l\'épissage d\'ARN')
                try:
                    filename = QFileDialog.getOpenFileName(self, 'Ouvrir le fichier des introns  (FASTA) ', os.getenv('HOME'))
                    FASTA_introns=final_FASTA(filename[0])
                    print(FASTA_introns)
                    def epissage(ARN,introns):
                        result = ''
                        for intron in introns:
                            ARN = ARN.replace(intron, '')
                        return ARN
                    self.ui.textEdit_2.setText(str(epissage(arn_result,FASTA_introns)))
                    arn_result=str(epissage(arn_result,FASTA_introns))
                except Exception as e:
                    print('Exception',str(e))
    #####################################fin des fonctions ARN ################################

    ###########################################################################################
    ################################# les fonctions sur ADN ###################################
    # fonction pour affectuer l assamblage
    def FONCTIONS_ADN(self,btn):
        def assemblage(ADNs):
            print(ADNs)
            if len(ADNs)==2:
                return ADNs[0]
            else:
                j=0
                SequenceF=ADNs[0]
                ADNs.pop(0)
                while(len(ADNs)!=0):
                    t=[]
                    for i in range(0,len(ADNs)):
                        t.append(0)
                        if not ADNs[i] in SequenceF:
                            k=len(ADNs[i])
                            while(k>0):
                                j1=SequenceF.endswith(ADNs[i][0:k])
                                if j1==True:
                                    if k>t[i]:
                                        t[i]=k
                                k=k-1
                        else:
                            ADNs.pop(i)

                    j=t[0]
                    jInd=0
                    for i1 in range(1,len(t)):
                        if t[i1]>j:
                            j=t[i1]
                            jInd=i1
                    SequenceF=SequenceF[0:len(SequenceF)-j]+ADNs[jInd]
                    ADNs.pop(jInd)

                return SequenceF
                pass

        ###############################
        ############################################################# dictionaire des adn codants
        DNA_CODON_TABLE = {
            'TTT': 'Phe',     'CTT': 'Leu',     'ATT': 'Ile',     'GTT': 'Val',
            'TTC': 'Phe',     'CTC': 'Leu',     'ATC': 'Ile',     'GTC': 'Val',
            'TTA': 'Leu',     'CTA': 'Leu',     'ATA': 'Ile',     'GTA': 'Val',
            'TTG': 'Leu',     'CTG': 'Leu',     'ATG': 'Met',     'GTG': 'Val',
            'TCT': 'Ser',     'CCT': 'Pro',     'ACT': 'Thr',     'GCT': 'Ala',
            'TCC': 'Ser',     'CCC': 'Pro',     'ACC': 'Thr',     'GCC': 'Ala',
            'TCA': 'Ser',     'CCA': 'Pro',     'ACA': 'Thr',     'GCA': 'Ala',
            'TCG': 'Ser',     'CCG': 'Pro',     'ACG': 'Thr',     'GCG': 'Ala',
            'TAT': 'Tyr',     'CAT': 'His',     'AAT': 'Asn',     'GAT': 'Asp',
            'TAC': 'Tyr',     'CAC': 'His',     'AAC': 'Asn',     'GAC': 'Asp',
            'TAA': '-',     'CAA': 'Gln',     'AAA': 'Lys',     'GAA': 'Glu',
            'TAG': '-',     'CAG': 'Gln',     'AAG,': 'Lys',     'GAG': 'Glu',
            'TGT': 'Cys',     'CGT': 'Arg',     'AGT': 'Ser',     'GGT': 'Gly',
            'TGC': 'Cys',     'CGC': 'Arg',     'AGC': 'Ser',     'GGC': 'Gly',
            'TGA': '-',     'CGA': 'Arg',     'AGA': 'Arg',     'GGA': 'Gly',
            'TGG': 'Trp',     'CGG': 'Arg',     'AGG': 'Arg',     'GGG': 'Gly'
        }

        if self.ui.textEdit.toPlainText()!='':
            adn_resultTAB=self.ui.textEdit.toPlainText().split("\n")
            if self.ui.radioButton_4.isChecked()==True and self.ui.textBrowser_3.toPlainText()!='':
                adn_result=self.ui.textBrowser_3.toPlainText()
            else:
                adn_result=adn_resultTAB[0]
            ###################
            if self.ui.radioButton_4.isChecked()==True and self.ui.textBrowser_3.toPlainText()=='' and btn.text()!='L\'assemblage des fragments ADN' and btn.text()!='Verifier Validite ADN':
                # message box pour effectuer l assemblage avant faire les tratments sur la sequence d'ADN
                buttonReply = QMessageBox.question(self, "Attention!", "Veuillez effectuer l'assemblage !!", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
                if buttonReply == QMessageBox.Yes:
                    print('ah ndir')
                    self.ui.textBrowser_3.setText(assemblage(adn_resultTAB))
                    adn_resultTAB=self.ui.textEdit.toPlainText().split("\n")
                    adn_result=assemblage(adn_resultTAB)
                    print(adn_result)
                else:
                    print('non mandirch')
                pass
            ###############################################Verifier Validite ADN
            if btn.text()=='Verifier Validite ADN':#si ADN vien d un fichier
                print('Verifier Validite ADN')
                def verif(adn_result_pure):
                    return len(adn_result_pure) == adn_result_pure.count("A")+adn_result_pure.count("T")+adn_result_pure.count("C")+adn_result_pure.count("G")
                if verif(adn_result):
                    self.ui.pushButton_2.setEnabled(True)
                    self.ui.pushButton_3.setEnabled(True)
                    self.ui.pushButton_4.setEnabled(True)
                    self.ui.pushButton_5.setEnabled(True)
                    self.ui.pushButton_6.setEnabled(True)
                    self.ui.pushButton_8.setEnabled(True)
                    self.ui.pushButton_13.setEnabled(False)
                    QMessageBox.about(self, "la validite de sequence", "sequence valide")
                else:
                    self.ui.pushButton_7.setEnabled(False)
                    self.ui.pushButton_13.setEnabled(False)
                    self.ui.pushButton_2.setEnabled(False)
                    self.ui.pushButton_3.setEnabled(False)
                    self.ui.pushButton_4.setEnabled(False)
                    self.ui.pushButton_5.setEnabled(False)
                    self.ui.pushButton_6.setEnabled(False)
                    self.ui.pushButton_8.setEnabled(False)
                    self.ui.textEdit.setText('')
                    QMessageBox.about(self, "la validite de sequence", "sequence no valide")


            #################################################Frequence Bn ADN
            if btn.text()=='Frequence Bn ADN':
                print('Frequence Bn ADN')
                try:
                    self.ui.textBrowser_7.setText(str(adn_result.count("A")))
                    self.ui.textBrowser_6.setText(str(adn_result.count("T")))
                    self.ui.textBrowser_4.setText(str(adn_result.count("G")))
                    self.ui.textBrowser_5.setText(str(adn_result.count("C")))
                except Exception as e:
                    print('exeption')
            ################################################# generer ARN
            if btn.text()=='Generer ARN':
                print('Generer ARN')
                ARN=''
                for nuc in adn_result:
                    if nuc=='C':
                        ARN=ARN+'G'
                    if nuc=='G':
                        ARN=ARN+'C'
                    if nuc=='A':
                        ARN=ARN+'U'
                    if nuc=='T':
                        ARN=ARN+'A'
                self.ui.textEdit_3.setText(ARN)
            ################################################# revers de ADN
            if btn.text()=='Reverse ADN':
                print('Reverse ADN')
                adnrevers=''
                for nuc in adn_result:
                    if nuc=='C':
                        adnrevers=adnrevers+'G'
                    if nuc=='G':
                        adnrevers=adnrevers+'C'
                    if nuc=='A':
                        adnrevers=adnrevers+'T'
                    if nuc=='T':
                        adnrevers=adnrevers+'A'
                self.ui.textEdit_4.setText(adnrevers)

            ################################################# le taux de CG dans la sequence
            if btn.text()=='%GC':
                print('%GC')
                def tauxCG(ADN):
                    return float(ADN.count("C")+ADN.count("G"))* 100 /len(ADN)
                self.ui.textBrowser.setText(str(tauxCG(adn_result)))
            ################################################# Fréquences de codons dans ADN
            if btn.text()==' Fréquences de codons dans ADN':
                print(' Fréquences de codons dans ADN')
                #les triple non codon ADN sont : TAA TAG TGA
                def frequencecondon(ADN):
                    cpt_condon=0
                    cpt_noncondon=0
                    for i in range(0, len(ADN)-len(ADN)%3, 3):
                        codon = ADN[i:i+3]
                        if codon in DNA_CODON_TABLE and DNA_CODON_TABLE.get(codon)!='-':
                            cpt_condon=cpt_condon+3
                    freq=(cpt_condon*100)/(len(ADN))
                    return freq
                self.ui.textBrowser_2.setText(str(frequencecondon(adn_result)))
            ################################################## assemblage des fragments ADN
            if btn.text()=='L\'assemblage des fragments ADN':
                print('L\'assemblage des fragments ADN')
                self.ui.textBrowser_3.setText(assemblage(adn_resultTAB))


#####################################################################################
############################## fin des fonctions ADN #################################
    def ADN_ENTRIE(self,btn):
        #self.ui.lineEdit.text()
        #self.ui.lineEdit_2.text()
        ############################################################################# Generer sequence ADN aleatoire
        def delet_file(namefile):
             if os.path.isfile(namefile):
                 os.remove(namefile)
             else:    ## Show an error ##
                 print("Error: %s file not found" % namefile)
        if btn.text()=='Valider':
            print('valider')
            delet_file("nuc.txt")
            #hide liste  radio buttons
            if self.ui.lineEdit.text()!='' and self.ui.lineEdit_2.text()!='':
                self.ui.listWidget_2.clear()
                self.ui.listWidget_2.hide()
                self.ui.radioButton_4.setChecked(True)
                self.ui.radioButton_3.setChecked(False)
                #si les edit texts non vide
                if self.ui.textEdit.toPlainText()!='':
                    if self.ui.textEdit_4.toPlainText()!='' or self.ui.textBrowser_9.toPlainText()!='' or  self.ui.textBrowser_8.toPlainText()!='' or self.ui.textEdit_2.toPlainText()!='' or self.ui.textEdit_3.toPlainText()!='' or self.ui.textBrowser_2.toPlainText()!='' or self.ui.textBrowser.toPlainText()!='' or self.ui.textEdit_4.toPlainText()!='' or self.ui.textBrowser_3.toPlainText()!='' or self.ui.textBrowser_4.toPlainText()!='' or self.ui.textBrowser_5.toPlainText()!='' or self.ui.textBrowser_7.toPlainText()!='' or self.ui.textBrowser_6.toPlainText()!='':
                        # message box pour savgarder les resultats precedant ou ecraser
                        buttonReply = QMessageBox.question(self, "Attention!", "vous allez ecraser vos resultat!! voulez vous Sauvegarder avant?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
                        if buttonReply == QMessageBox.Yes:
                            print('sauvgarder les resultat ')
                            self.d.exec_()
                        else:
                            print('ecraser')
                            ## efacer tt les resultat precedant
                            self.ui.textEdit.setText('')#resultat de ADN
                            self.ui.textEdit_4.setText('')#adn invers
                            self.ui.textBrowser_3.setText('')#fragments adn assamnblee
                            self.ui.textBrowser_4.setText('')# nuc G
                            self.ui.textBrowser_5.setText('')# nuc C
                            self.ui.textBrowser_7.setText('')# nuc A
                            self.ui.textBrowser_6.setText('')# nuc T
                            self.ui.textBrowser.setText('') # taux GC
                            self.ui.textBrowser_2.setText('') # taux adn codants
                            self.ui.textEdit_3.setText('') # resultat ARN
                            self.ui.textEdit_2.setText('') # arn apres epissage
                            self.ui.textBrowser_8.setText('') # la masse proteique
                            self.ui.textBrowser_9.setText('') # sequence pretieque
                            # the new adn
                            adn=''
                            nbr_nuc=int(self.ui.lineEdit.text())
                            nbr_sec=int(self.ui.lineEdit_2.text())
                            nuc=["A","T","C","G"]
                            for n in range(nbr_sec):
                                for m in range(nbr_nuc):
                                    adn=adn+nuc[random.randint(0,3)]
                                adn=adn+"\n"

                            self.ui.textEdit.setText(adn)

                            ######"enableled les buttons
                            self.ui.pushButton_2.setEnabled(True)
                            self.ui.pushButton_3.setEnabled(True)
                            self.ui.pushButton_4.setEnabled(True)
                            self.ui.pushButton_5.setEnabled(True)
                            self.ui.pushButton_6.setEnabled(True)
                            self.ui.pushButton_8.setEnabled(True)


                    else:
                        adn=''
                        nbr_nuc=int(self.ui.lineEdit.text())
                        nbr_sec=int(self.ui.lineEdit_2.text())
                        nuc=["A","T","C","G"]
                        for n in range(nbr_sec):
                            for m in range(nbr_nuc):
                                adn=adn+nuc[random.randint(0,3)]
                            adn=adn+"\n"

                        self.ui.textEdit.setText(adn)

                        ######"enableled les buttons
                        self.ui.pushButton_2.setEnabled(True)
                        self.ui.pushButton_3.setEnabled(True)
                        self.ui.pushButton_4.setEnabled(True)
                        self.ui.pushButton_5.setEnabled(True)
                        self.ui.pushButton_6.setEnabled(True)
                        self.ui.pushButton_8.setEnabled(True)
                    #♥wech zedt
                else:
                    adn=''
                    nbr_nuc=int(self.ui.lineEdit.text())
                    nbr_sec=int(self.ui.lineEdit_2.text())
                    nuc=["A","T","C","G"]
                    for n in range(nbr_sec):
                        for m in range(nbr_nuc):
                            adn=adn+nuc[random.randint(0,3)]
                        adn=adn+"\n"

                    self.ui.textEdit.setText(adn)

                    ######"enableled les buttons
                    self.ui.pushButton_2.setEnabled(True)
                    self.ui.pushButton_3.setEnabled(True)
                    self.ui.pushButton_4.setEnabled(True)
                    self.ui.pushButton_5.setEnabled(True)
                    self.ui.pushButton_6.setEnabled(True)
                    self.ui.pushButton_8.setEnabled(True)
                    #supprimer les resultat precedant
            else:
                print('edit text manquante ')


        ###################################################################### sequences ADN Generer depuis un fichier FASTA
        if btn.text()=='Chemin Vers Fichier':
            #hide liste  radio buttons
            delet_file("nuc.txt")
            self.ui.listWidget_2.clear()
            self.ui.listWidget_2.hide()
            self.ui.radioButton_4.setChecked(True)
            self.ui.radioButton_3.setChecked(False)
            def readFASTA(filename):
                 with open(filename) as file:
                    return (file.read().split('>')[1:])

            def read_FASTA_entries(filename):
                return[seq.partition('\n')for seq in readFASTA(filename)]

            def final_FASTA(filename):
                return[seq[2].replace('\n','') for seq in read_FASTA_entries(filename)]
            self.ui.listWidget_2.hide()
            self.ui.radioButton_4.setChecked(False)
            self.ui.radioButton_3.setChecked(False)
            if self.ui.textEdit.toPlainText()!='':
                if self.ui.textEdit_4.toPlainText()!='' or self.ui.textBrowser_9.toPlainText()!='' or  self.ui.textBrowser_8.toPlainText()!='' or self.ui.textEdit_2.toPlainText()!='' or self.ui.textEdit_3.toPlainText()!='' or self.ui.textBrowser_2.toPlainText()!='' or self.ui.textBrowser.toPlainText()!='' or self.ui.textEdit_4.toPlainText()!='' or self.ui.textBrowser_3.toPlainText()!='' or self.ui.textBrowser_4.toPlainText()!='' or self.ui.textBrowser_5.toPlainText()!='' or self.ui.textBrowser_7.toPlainText()!='' or self.ui.textBrowser_6.toPlainText()!='':
                    # message box pour savgarder les resultats precedant ou ecraser
                    buttonReply = QMessageBox.question(self, "Attention!", "vous allez ecraser vos resultat voulez vous Sauvegarder avant?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
                    if buttonReply == QMessageBox.Yes:
                        print('sauvgarder les resultat ')
                        self.d.exec_()
                    else:
                        print('ecraser')
                        ## efacer tt les resultat precedant
                        self.ui.textEdit.setText('')#resultat de ADN
                        self.ui.textEdit_4.setText('')#adn invers
                        self.ui.textBrowser_3.setText('')#fragments adn assamnblee
                        self.ui.textBrowser_4.setText('')# nuc G
                        self.ui.textBrowser_5.setText('')# nuc C
                        self.ui.textBrowser_7.setText('')# nuc A
                        self.ui.textBrowser_6.setText('')# nuc T
                        self.ui.textBrowser.setText('') # taux GC
                        self.ui.textBrowser_2.setText('') # taux adn codants
                        self.ui.textEdit_3.setText('') # resultat ARN
                        self.ui.textEdit_2.setText('') # arn apres epissage
                        self.ui.textBrowser_8.setText('') # la masse proteique
                        self.ui.textBrowser_9.setText('') # sequence pretieque
                        # new ADN
                        print('chemin vers chemin')
                        self.ui.pushButton_13.setEnabled(True)
                        self.ui.pushButton_2.setEnabled(False)
                        self.ui.pushButton_3.setEnabled(False)
                        self.ui.pushButton_4.setEnabled(False)
                        self.ui.pushButton_5.setEnabled(False)
                        self.ui.pushButton_6.setEnabled(False)
                        self.ui.pushButton_8.setEnabled(False)
                        # three methode to read a FASTA file
                        adn=''
                        try:
                            filename = QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME'))
                            FASTA=final_FASTA(filename[0])
                            for value in FASTA:
                                adn=adn+value+"\n"
                            self.ui.textEdit.setText(adn)
                        except Exception as e:
                            print('exaption',str(e))
                else:
                    print('chemin vers chemin')
                    self.ui.pushButton_13.setEnabled(True)
                    self.ui.pushButton_2.setEnabled(False)
                    self.ui.pushButton_3.setEnabled(False)
                    self.ui.pushButton_4.setEnabled(False)
                    self.ui.pushButton_5.setEnabled(False)
                    self.ui.pushButton_6.setEnabled(False)
                    self.ui.pushButton_8.setEnabled(False)
                    # three methode to read a FASTA file
                    adn=''
                    try:
                        filename = QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME'))
                        FASTA=final_FASTA(filename[0])
                        for value in FASTA:
                            adn=adn+value+"\n"
                        self.ui.textEdit.setText(adn)
                    except Exception as e:
                        print('exaption',str(e))


            else:
                print('chemin vers chemin')
                self.ui.pushButton_13.setEnabled(True)
                self.ui.pushButton_2.setEnabled(False)
                self.ui.pushButton_3.setEnabled(False)
                self.ui.pushButton_4.setEnabled(False)
                self.ui.pushButton_5.setEnabled(False)
                self.ui.pushButton_6.setEnabled(False)
                self.ui.pushButton_8.setEnabled(False)
                # three methode to read a FASTA file
                adn=''
                try:
                    filename = QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME'))
                    FASTA=final_FASTA(filename[0])
                    for value in FASTA:
                        adn=adn+value+"\n"
                    self.ui.textEdit.setText(adn)
                except Exception as e:
                    print('exaption',str(e))
##################################################################################
################## radio buttons pour choisir un sequence ou touts les sequences
    def RADIOSEQUENCE(self,btn):
        if btn.text()=='Toutes les sequences':
            print('Toutes les sequences')
            if self.ui.listWidget_2.count()!=0:
                adn=''
                for value in range(self.ui.listWidget_2.count()):
                    adn=adn+self.ui.listWidget_2.item(value).text()+"\n"
                    pass
                print(adn)
                self.ui.listWidget_2.hide()
                self.ui.textEdit.setText(adn)

                pass

            ################################################################################

            #################################################################################
        if btn.text()=='Une seul sequences':
            print('Une seul sequences')
            print(self.ui.listWidget_2.count())
            if self.ui.listWidget_2.count()==0:
                print('not null')
                t=self.ui.textEdit.toPlainText().split("\n")
                if len(t)==1:
                    self.ui.listWidget_2.addItem(t[0])
                    pass
                else:
                    for value in range(len(t)-1):
                        self.ui.listWidget_2.addItem(t[value])
                        print(t[value])
                    pass
            self.ui.listWidget_2.show()
            self.ui.listWidget_2.itemClicked.connect(self.itemANDclicked)

    def RADION_ADN_ENTRIE(self,btn2):
        if btn2.text()=='Generer Sequence Aleatoire':
            self.ui.ValiderNbrAdn.setEnabled(True)
            self.ui.pushButton_7.setEnabled(False)
        if btn2.text()=='Charger Fichier':
            self.ui.pushButton_7.setEnabled(True)
            self.ui.ValiderNbrAdn.setEnabled(False)
    ######################################################
    def itemANDclicked(self,item):
        print(str(item.text()))
        if self.ui.textEdit.toPlainText()!='':
            if self.ui.textEdit_4.toPlainText()!='' or self.ui.textBrowser_9.toPlainText()!='' or  self.ui.textBrowser_8.toPlainText()!='' or self.ui.textEdit_2.toPlainText()!='' or self.ui.textEdit_3.toPlainText()!='' or self.ui.textBrowser_2.toPlainText()!='' or self.ui.textBrowser.toPlainText()!='' or self.ui.textEdit_4.toPlainText()!='' or self.ui.textBrowser_3.toPlainText()!='' or self.ui.textBrowser_4.toPlainText()!='' or self.ui.textBrowser_5.toPlainText()!='' or self.ui.textBrowser_7.toPlainText()!='' or self.ui.textBrowser_6.toPlainText()!='':
                buttonReply = QMessageBox.question(self, "Attention!", "vous allez ecraser vos resultat voulez vous Sauvegarder avant?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
                if buttonReply == QMessageBox.Yes:
                    print('sauvgarder les resultat ')
                    self.d.exec_()
                else:
                    print('ecraser')
                    ## efacer tt les resultat precedant
                    self.ui.textEdit.setText('')#resultat de ADN
                    self.ui.textEdit_4.setText('')#adn invers
                    self.ui.textBrowser_3.setText('')#fragments adn assamnblee
                    self.ui.textBrowser_4.setText('')# nuc G
                    self.ui.textBrowser_5.setText('')# nuc C
                    self.ui.textBrowser_7.setText('')# nuc A
                    self.ui.textBrowser_6.setText('')# nuc T
                    self.ui.textBrowser.setText('') # taux GC
                    self.ui.textBrowser_2.setText('') # taux adn codants
                    self.ui.textEdit_3.setText('') # resultat ARN
                    self.ui.textEdit_2.setText('') # arn apres epissage
                    self.ui.textBrowser_8.setText('') # la masse proteique
                    self.ui.textBrowser_9.setText('') # sequence pretieque
                    # new ADN
                    self.ui.textEdit.setText(item.text())

                pass
Beispiel #23
0
class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.nn = captcha.Net()
        QtCore.QObject.connect(self.ui.toolButtonBuscarCarpeta, QtCore.SIGNAL("clicked()"), self.folder_dialog)
        QtCore.QObject.connect(self.ui.toolButtonEntrenar,QtCore.SIGNAL("clicked()"), self.train)
        QtCore.QObject.connect(self.ui.toolButtonBuscarArchivo,QtCore.SIGNAL("clicked()"), self.file_dialog)
        QtCore.QObject.connect(self.ui.toolButtonCargar, QtCore.SIGNAL("clicked()"), self.show_captcha)
        QtCore.QObject.connect(self.ui.toolButtonDescifrar, QtCore.SIGNAL("clicked()"), self.process)
        QtCore.QObject.connect(self.ui.toolButtonModificar, QtCore.SIGNAL("clicked()"), self.modify)
        QtCore.QObject.connect(self.ui.pushButtonSalir, QtCore.SIGNAL("clicked()"), self.salir)

    def folder_dialog(self):
        fd = QtGui.QFileDialog(self)
        self.dir = fd.getExistingDirectory(caption= "Seleccionar carpeta", options=fd.ShowDirsOnly)
        self.ui.lineEditCarpeta.setText(self.dir)

    def train(self):
        folder = str(self.ui.lineEditCarpeta.text())
        #dic = captcha.targetDic(folder)
        files = os.walk(folder).next()[2]
        files = filter(lambda e: e.endswith(('.bmp', '.jpeg', '.jpg', '.png')), files)
        #self.ui.progressBar.setRange(0, len(dic))
        #count = 0
        #for im in files:
            #if dic.has_key(im):
                #self.ui.labelProgress.setText(im)
                #xi = captcha.getInputs(im)
                #for i in range(5):
        hash = folder + "/hash.txt"
        if(isfile(hash)):
            self.nn.train(files, folder)
        else:
            print "No existe el archivo \"hash.txt\""
                #count += 1
                #self.ui.progressBar.setValue(count)

    def file_dialog(self):
        fd = QtGui.QFileDialog(self)
        self.filename = fd.getOpenFileName(caption= "Seleccionar archivo", filter="Images (*.png *.bmp *.jpg)")
        if isfile(self.filename):
            self.ui.lineEditArchivo.setText(self.filename)

    def show_captcha(self):
        scene = QtGui.QGraphicsScene()
        scene.addPixmap(QtGui.QPixmap(self.ui.lineEditArchivo.text()))
        self.ui.graphicsViewCaptcha.setScene(scene)

    def process(self):
        xi = captcha.getInputs(str(self.ui.lineEditArchivo.text()))
        self.ui.lineEdit.setText(self.nn.update(xi[0]))
        self.ui.lineEdit_2.setText(self.nn.update(xi[1]))
        self.ui.lineEdit_3.setText(self.nn.update(xi[2]))
        self.ui.lineEdit_4.setText(self.nn.update(xi[3]))
        self.ui.lineEdit_5.setText(self.nn.update(xi[4]))

    def modify(self):
        l1 = str(self.ui.lineEdit.text())
        l2 = str(self.ui.lineEdit_2.text())
        l3 = str(self.ui.lineEdit_3.text())
        l4 = str(self.ui.lineEdit_4.text())
        l5 = str(self.ui.lineEdit_5.text())
        xi = captcha.getInputs(str(self.ui.lineEditArchivo.text()))
        targets = map(captcha.getTarget, [l1, l2, l3, l4, l5])
        for i in range(5):
            self.nn.update(xi[i])
            self.nn.backPropagate(targets[i])

    def salir(self):
        captcha.updateFile(self.nn.wi, "../pesos.txt")
        captcha.updateFile(self.nn.wo, "../pesos2.txt")
        answer = QtGui.QMessageBox.question(self.parent(), u"¿Salir?", u"¿Está seguro que desea salir?",
        QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
        if answer == QtGui.QMessageBox.Yes:
            self.close()
Beispiel #24
0
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton_2.clicked.connect(self.openPic)
        self.ui.pushButton_6.clicked.connect(self.esLink)
        self.ui.pushButton_4.clicked.connect(self.showslectedPic)
        self.ui.pushButton_5.clicked.connect(self.showPicresult)

        self.ui.checkBox.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_2.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_3.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_4.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_5.clicked.connect(self.checkBoxSlection)
        self.ui.checkBox_6.clicked.connect(self.checkBoxSlection)
        self.ui.pushButton_3.clicked.connect(self.uploadPic)

        self.tempList = [
            self.ui.checkBox, self.ui.checkBox_2, self.ui.checkBox_3,
            self.ui.checkBox_4, self.ui.checkBox_5, self.ui.checkBox_6
        ]
        self.checkSlectedFlage = 0
        self.detectObjection = ''
        self.picName = ''
        self.address = ['', 8000]
        self.address[0] = self.ui.lineEdit.text()

        self.picUploadThread = picUploadThread()
        self.picUploadThread.startWaitRePicFla.connect(self.openWaitTimer)
        self.waitPicThread = waitPicThread(address=tuple(self.address),
                                           Obj=self.ui.textBrowser)
        self.waitPicThread.findPicSignal.connect(self.FindPicture)

    #  self.showVideoThread = showVideoThread(uiobj = self.ui)
    #每当上传完图片会发送一个信号,这是接受槽
    def openWaitTimer(self):
        self.waitPicThread.start()

    def FindPicture(self):
        #得到图片之后就把图片显示在界面上面
        QMessageBox.about(self, '通知', '图片已经处理完毕')
        number = re.findall(r'\d+', picResultNmae)
        self.ui.label_4.setText(
            "<html><head/><body><p><span style=\" font-size:72pt; color:#5500ff;\">"
            + str(number[0]) + "</span></p></body></html>")

    #显示被选中的图片的槽函数
    def showslectedPic(self):
        global localPicPath
        fname = localPicPath
        if fname:
            img = cv2.imdecode(np.fromfile(fname, dtype=np.uint8),
                               -1)  # 当使用中文路径的时候只能这样读
            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
            self.zoomscale = 1
            height, width, depth = img.shape
            frame = QImage(img.data, width, height, width * depth,
                           QImage.Format_RGB888)
            pix = QPixmap.fromImage(frame)
            self.item = QGraphicsPixmapItem(pix)
            scene = QGraphicsScene()
            scene.addItem(self.item)
            self.ui.graphicsView.setScene(scene)
        else:
            pass

    #显示选中图片处理之后的槽函数
    def showPicresult(self):
        global picResultPath
        fname = picResultPath
        if fname:
            img = cv2.imdecode(np.fromfile(fname, dtype=np.uint8),
                               -1)  # 当使用中文路径的时候只能这样读
            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
            self.zoomscale = 1
            height, width, depth = img.shape
            frame = QImage(img.data, width, height, width * depth,
                           QImage.Format_RGB888)
            pix = QPixmap.fromImage(frame)
            self.item = QGraphicsPixmapItem(pix)
            scene = QGraphicsScene()
            scene.addItem(self.item)
            self.ui.graphicsView.setScene(scene)
        else:
            pass

    # 定义建立连接的槽
    def esLink(self):
        addressTuple = tuple(self.address)
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.connect(addressTuple)
        sock.send('&|&'.encode())  # 默认编码 utf-8,发送文件长度和文件名
        reply = sock.recv(1024)
        if reply.decode() == 'link_ok':
            self.ui.textBrowser.append("成功连接服务器!!!")
        else:
            self.ui.textBrowser.append("连接服务器失败!!!")
        sock.close()

    # 以下定义的是打开图片按钮的槽
    def openPic(self):
        global localPicPath
        print("打开图片被按下")
        self.ui.textBrowser.append("打开图片按钮 被按下")
        fname, _ = QFileDialog.getOpenFileName(self, '打开文件', '.',
                                               '图像文件(*.jpg *.png)')
        if fname:
            localPicPath = fname
            img = cv2.imdecode(np.fromfile(fname, dtype=np.uint8),
                               -1)  # 当使用中文路径的时候只能这样读
            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
            self.zoomscale = 1
            height, width, depth = img.shape
            frame = QImage(img.data, width, height, width * depth,
                           QImage.Format_RGB888)
            pix = QPixmap.fromImage(frame)
            self.item = QGraphicsPixmapItem(pix)
            scene = QGraphicsScene()
            scene.addItem(self.item)
            self.ui.graphicsView.setScene(scene)
        else:
            pass

    # 以下是定义checkbox的槽函数
    def checkBoxSlection(self):
        global realSendPicName
        if self.checkSlectedFlage == 0:
            for index, i in enumerate(self.tempList):
                if i.isChecked():
                    for index_j, j in enumerate(self.tempList):
                        if index_j != index:
                            j.setEnabled(False)
                        self.checkSlectedFlage = 1
                        if index == 0:
                            self.detectObjection = 'person'
                        elif index == 1:
                            self.detectObjection = 'desk'
                        elif index == 2:
                            self.detectObjection = 'car'
                        elif index == 3:
                            self.detectObjection = 'chair'
                        elif index == 4:
                            self.detectObjection = 'lightcar'
                        elif index == 5:
                            self.detectObjection = 'tv'

                        self.picName = self.detectObjection
                        realSendPicName = self.picName
        elif self.checkSlectedFlage == 1:
            for i in self.tempList:
                i.setEnabled(True)
                self.checkSlectedFlage = 0

    # 以下是定义上传图片的槽
    def uploadPic(self):
        global localPicPath
        if localPicPath == '':
            QMessageBox.warning(self, '警告', '请打开一张图片')
        elif self.checkSlectedFlage == 0:
            QMessageBox.warning(self, '警告', '请选择一个需要检测的物体')
        else:
            self.picUploadThread.start()

    def keyPressEvent(self, e):
        if e.key() == Qt.Key_Q:
            self.ui.textBrowser.append("Q被按下 图片被缩小")
            self.zoomscale = self.zoomscale - 0.05
            if self.zoomscale <= 0:
                self.zoomscale = 0.2
            self.item.setScale(self.zoomscale)
        if e.key() == Qt.Key_W:
            self.ui.textBrowser.append("W被按下 图片被放大")
            self.zoomscale = self.zoomscale + 0.05
            if self.zoomscale >= 1.2:
                self.zoomscale = 1.2
            self.item.setScale(self.zoomscale)

    def openVideo(self):
        self.showVideoThread.start(self.ui)
Beispiel #25
0
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.setWindowTitle("Calculator")

        self.ui.pushButton.clicked.connect(self.btnClicked_1)
        self.ui.pushButton_2.clicked.connect(self.btnClicked_2)
        self.ui.pushButton_3.clicked.connect(self.btnClicked_3)
        self.ui.pushButton_4.clicked.connect(self.btnClicked_4)
        self.ui.pushButton_5.clicked.connect(self.btnClicked_5)
        self.ui.pushButton_6.clicked.connect(self.btnClicked_6)
        self.ui.pushButton_7.clicked.connect(self.btnClicked_7)
        self.ui.pushButton_8.clicked.connect(self.btnClicked_8)
        self.ui.pushButton_9.clicked.connect(self.btnClicked_9)
        self.ui.pushButton_10.clicked.connect(self.btnClicked_10)
        self.ui.pushButton_11.clicked.connect(self.btnClicked_11)
        self.ui.pushButton_12.clicked.connect(self.btnClicked_12)
        self.ui.pushButton_13.clicked.connect(self.btnClicked_13)
        self.ui.pushButton_14.clicked.connect(self.btnClicked_14)
        self.ui.pushButton_15.clicked.connect(self.btnClicked_15)
        self.ui.pushButton_16.clicked.connect(self.btnClicked_16)
        self.ui.pushButton_17.clicked.connect(self.btnClicked_17)

    def btnClicked_1(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + " + ")

    def btnClicked_2(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + " * ")

    def btnClicked_3(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + " / ")

    def btnClicked_4(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(str(result))

    def btnClicked_5(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + " - ")

    def btnClicked_6(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + " = ")
        term = self.textbox.split()
        global result
        result = int(term[0])
        for i in range(1, len(term), 2):
            if term[i] == '+':
                result = result + int(term[i + 1])

            if term[i] == '-':
                result = result - int(term[i + 1])

            if term[i] == '*':
                result = result * int(term[i + 1])

            if term[i] == '/':
                result = result / int(term[i + 1])

        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + str(result))

    def btnClicked_7(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText("")
        global result
        result = 0

    def btnClicked_8(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "4")

    def btnClicked_9(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "1")

    def btnClicked_10(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "7")

    def btnClicked_11(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "2")

    def btnClicked_12(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "3")

    def btnClicked_13(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "5")

    def btnClicked_14(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "6")

    def btnClicked_15(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "8")

    def btnClicked_16(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "9")

    def btnClicked_17(self):
        self.textbox = self.ui.lineEdit.text()
        self.ui.lineEdit.setText(self.textbox + "0")
Beispiel #26
0
    def __init__(self):

        super().__init__()
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)
        self.show()
        #les buttons de graph
        self.ui.pushButton_16.hide()
        #self.ui.pushButton_17.hide()
        self.ui.pushButton_17.clicked.connect(self.showgragh)
        #manuelle de utilasation 1
        self.path = r"aide1.pdf"
        self.url = bytearray(QUrl().fromLocalFile(self.path).toEncoded()).decode()
        self.text = "<a href={}>></a>".format(self.url)
        self.ui.pushButton.setText(self.text+"?")
        self.ui.pushButton.setOpenExternalLinks(True)
        #manuelle de utilasation 2
        self.path = r"aide2.pdf"
        self.url = bytearray(QUrl().fromLocalFile(self.path).toEncoded()).decode()
        self.text = "<a href={}>></a>".format(self.url)
        self.ui.pushButton_14.setText(self.text+"?")
        self.ui.pushButton_14.setOpenExternalLinks(True)
        #manuelle de utilasation 3
        self.path = r"aide3.pdf"
        self.url = bytearray(QUrl().fromLocalFile(self.path).toEncoded()).decode()
        self.text = "<a href={}>></a>".format(self.url)
        self.ui.pushButton_15.setText(self.text+"?")
        self.ui.pushButton_15.setOpenExternalLinks(True)

        #griser les buttons
        self.ui.ValiderNbrAdn.setEnabled(False)
        self.ui.pushButton_7.setEnabled(False)
        self.ui.pushButton_13.setEnabled(False)
        self.ui.pushButton_2.setEnabled(False)
        self.ui.pushButton_3.setEnabled(False)
        self.ui.pushButton_4.setEnabled(False)
        self.ui.pushButton_5.setEnabled(False)
        self.ui.pushButton_6.setEnabled(False)
        self.ui.pushButton_8.setEnabled(False)
        self.ui.lineEdit.setPlaceholderText('#nuc')
        self.ui.lineEdit_2.setPlaceholderText('#sec')
        self.ui.listWidget_2.hide()
        # le button de sauvgarde du resultat
        self.ui.pushButton_9.clicked.connect(self.saveWindows)
        #les buttons des fonctions ARN
        self.btn_grp4= QButtonGroup()
        self.btn_grp4.setExclusive(True)
        self.btn_grp4.addButton(self.ui.pushButton_10)
        self.btn_grp4.addButton(self.ui.pushButton_11)
        self.btn_grp4.addButton(self.ui.pushButton_12)
        self.btn_grp4.buttonClicked.connect(self.FONCTIONS_ARN)
        #les buttons des fonctions ADN
        self.btn_grp3= QButtonGroup()
        self.btn_grp3.setExclusive(True)
        self.btn_grp3.addButton(self.ui.pushButton_13)
        self.btn_grp3.addButton(self.ui.pushButton_2)
        self.btn_grp3.addButton(self.ui.pushButton_3)
        self.btn_grp3.addButton(self.ui.pushButton_4)
        self.btn_grp3.addButton(self.ui.pushButton_5)
        self.btn_grp3.addButton(self.ui.pushButton_6)
        self.btn_grp3.addButton(self.ui.pushButton_8)
        self.btn_grp3.buttonClicked.connect(self.FONCTIONS_ADN)
        # les radio buttons un seul sequence plusius ADN
        self.btn_grpRADIO = QButtonGroup()
        self.btn_grpRADIO.setExclusive(True)
        self.btn_grpRADIO.addButton(self.ui.radioButton_4)# tts les sequences
        self.btn_grpRADIO.addButton(self.ui.radioButton_3)# un seule sequence
        self.btn_grpRADIO.buttonClicked.connect(self.RADIOSEQUENCE)
        #les botton de insertion de ADN
        self.btn_grp = QButtonGroup()
        self.btn_grp.setExclusive(True)
        self.btn_grp.addButton(self.ui.ValiderNbrAdn)
        self.btn_grp.addButton(self.ui.pushButton_7)
        self.btn_grp.buttonClicked.connect(self.ADN_ENTRIE)
        ########################### group de radio buttons
        self.btn_grp2 = QButtonGroup()
        self.btn_grp2.setExclusive(True)
        self.btn_grp2.addButton(self.ui.radioButton)
        self.btn_grp2.addButton(self.ui.radioButton_2)
        self.btn_grp2.buttonClicked.connect(self.RADION_ADN_ENTRIE)
        #####################################################################
        # dialog de sauvgarde les resultats
        self.d = QDialog()
        self.d.setWindowTitle("Sauvgarde")
        self.d.resize(340, 400)
        self.d.setStyleSheet("background-color: #636363;")
        self.centralwidget = QWidget(self.d)
        self.centralwidget.setObjectName("centralwidget")
        self.groupBox_9 = QGroupBox(self.centralwidget)
        self.groupBox_9.setGeometry(QtCore.QRect(50, 80, 240, 231))
        self.groupBox_9.setStyleSheet("QGroupBox \n""{\n""\n""color:#c2c2c2;\n""margin: 0em;\n""  border: 1px solid #c2c2c2; \n""  border-radius: 8px;\n""} \n""")
        self.groupBox_9.setTitle("")
        self.groupBox_9.setObjectName("groupBox_9")
        self.label_8 = QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(70, 70, 81, 16))
        self.label_8.setStyleSheet("font: 75 10pt \"Tw Cen MT\";\n""color:#c2c2c2;")
        self.label_8.setObjectName("label_8")
        self.save = QPushButton(self.centralwidget)
        self.save.setGeometry(QtCore.QRect(140, 320, 50, 23))
        self.save.setStyleSheet("color:\"white\";\n""background-color:#d50000;")
        self.save.setObjectName("save")
        self.checkBox_2 = QCheckBox(self.centralwidget)
        self.checkBox_2.setGeometry(QtCore.QRect(90, 110, 151, 21))
        self.checkBox_2.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_2.setObjectName("checkBox_2")
        self.checkBox_3 = QCheckBox(self.centralwidget)
        self.checkBox_3.setGeometry(QtCore.QRect(90, 130, 151, 21))
        self.checkBox_3.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_3.setObjectName("checkBox_3")
        self.checkBox_4 = QCheckBox(self.centralwidget)
        self.checkBox_4.setGeometry(QtCore.QRect(90, 150, 151, 21))
        self.checkBox_4.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_4.setObjectName("checkBox_4")
        self.checkBox_5 = QCheckBox(self.centralwidget)
        self.checkBox_5.setGeometry(QtCore.QRect(90, 170, 151, 21))
        self.checkBox_5.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_5.setObjectName("checkBox_5")
        self.checkBox_6 = QCheckBox(self.centralwidget)
        self.checkBox_6.setGeometry(QtCore.QRect(90, 190, 151, 21))
        self.checkBox_6.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_6.setObjectName("checkBox_6")
        self.checkBox_7 = QCheckBox(self.centralwidget)
        self.checkBox_7.setGeometry(QtCore.QRect(90, 210, 191, 21))
        self.checkBox_7.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_7.setObjectName("checkBox_7")
        self.checkBox_8 = QCheckBox(self.centralwidget)
        self.checkBox_8.setGeometry(QtCore.QRect(90, 230, 191, 21))
        self.checkBox_8.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_8.setObjectName("checkBox_8")
        self.checkBox_9 = QCheckBox(self.centralwidget)
        self.checkBox_9.setGeometry(QtCore.QRect(90, 250, 191, 21))
        self.checkBox_9.setStyleSheet("color:#c2c2c2;\n""font: 75 10pt \"Tw Cen MT\";")
        self.checkBox_9.setObjectName("checkBox_9")
        ###########les noms des widgets
        self.label_8.setText( "Sauvegrader:")
        self.save.setText( "Valider")
        self.checkBox_2.setText( "ADN Reverse")
        self.checkBox_3.setText( "Frequence Bn ADN")
        self.checkBox_4.setText( "Frequence codons")
        self.checkBox_5.setText( "%GC")
        self.checkBox_6.setText( " Sequences ARN")
        self.checkBox_7.setText( "Sequence ARN apres epissage")
        self.checkBox_8.setText( "Sequences proteique")
        self.checkBox_9.setText( "La masse protéique")
        self.save.clicked.connect(self.save_resultat)
Beispiel #27
0
class Bss(object):
    def __init__(self):
        self.app = QtWidgets.QApplication(sys.argv)  # 生成应用
        self.window = QtWidgets.QMainWindow()  # 生成窗口q
        self.ui = Ui_MainWindow()  # 使用QTdesigner自动创建的类
        self.flag = 0

    def startWin(self):
        self.flag = 0  # 判断是否读入文件
        self.ui.setupUi(self.window)
        self.sc = showController(self.ui, self.window)
        self.winsize = WinSize(self.window)
        self.winsize.adjust()
        self.window.show()
        self.menuConnect()
        sys.exit(self.app.exec_())

    def menuConnect(self):
        self.ui.menuFile.triggered[QAction].connect(self.importFile)  # 菜单触发
        self.ui.menuWindow.triggered[QAction].connect(
            self.setWindowSize)  # 菜单触发调整窗口大小
        self.ui.menu.triggered[QAction].connect(self.op)  # 菜单触发调整窗口大小
        self.ui.menuFilter.triggered[QAction].connect(
            self.filterFunc)  # 菜单触发选择过滤器

    # 下拉菜单触发函数
    def handleActivatedInstitutionCode(self, index):
        code = self.combox.itemText(index)  # 通过下拉框索引找到相应的机构代码
        data = self.filter.get_data_by_institution_code(code)
        self.sc.setText(str(data))
        import functools
        date_list = data.pop('日期')

        def create_button(dict, name=""):
            for key in dict:
                name = name + " " + key
                if type(dict[key]) != type(dict):
                    b = self.sc.add_push_button(name + "变化",
                                                self.sc.get_layout())
                    b.clicked.connect(
                        functools.partial(self.sc.draw_tendency_by_date,
                                          date_list, dict[key], name + "变化"))

                else:
                    create_button(dict[key], name)
                name = " ".join(name.split(" ")[:-1])  # 减去上一个key

        create_button(data)  # 找到字典中最底层的键值,并添加按钮

    def handleActivatedDate(self, index):
        date = self.combox.itemText(index)  # 通过下拉框索引找到相应的日期
        data = self.filter.get_data_by_date(date)
        self.sc.setText(str(data))
        data.pop('日期')
        institution_list = data.pop('机构代码')

        import functools

        def create_button(dict, name=""):
            for key in dict:
                name = name + " " + key
                if type(dict[key]) != type(dict):
                    b = self.sc.add_push_button(name, self.sc.get_layout())
                    b.clicked.connect(
                        functools.partial(self.sc.draw_tendency,
                                          institution_list, dict[key], name))

                else:
                    create_button(dict[key], name)
                name = " ".join(name.split(" ")[:-1])  # 减去上一个key

        create_button(data)  # 找到字典中最底层的键值,并添加按钮

    # 按钮触发
    def handleActivatedCheckBox(self):
        checked_list = []
        for checkBox in self.checkBox_list:
            if checkBox.isChecked():
                checked_list.append(checkBox.text())
        data_list = []
        for code in checked_list:
            data_list.append(self.filter.get_data_by_institution_code(code))
        self.sc.setText(str(data_list))
        for data in data_list:
            date_list = data.pop('日期')
        key_value_list = []

        def findValue(dict):
            for key in dict:
                if type(dict[key]) != type(dict):
                    key_value_list.append(dict[key])
                else:
                    findValue(dict[key])

        key_value_list_list = []
        for data in data_list:
            key_value_list = []
            findValue(data)  # 找到字典中最底层的键值
            key_value_list_list.append(key_value_list)
        import functools

        def create_button(dict, i, name=""):
            # print(dict,i)
            for key in dict:
                name = name + " " + key
                if type(dict[key]) != type(dict):
                    i = i + 1
                    b = self.sc.add_push_button(name, self.sc.get_layout())
                    b.clicked.connect(
                        functools.partial(self.sc.draw_tendency_compare,
                                          date_list,
                                          [x[i] for x in key_value_list_list],
                                          checked_list, name))
                else:
                    create_button(dict[key], i, name)
                name = " ".join(name.split(" ")[:-1])  # 减去上一个key

        for i in range(self.sc.get_layout().count()):
            x = self.sc.get_layout().itemAt(i)
            x.widget().deleteLater()  # 清除布局内容
        create_button(data_list[0], 0)  # 找到字典中最底层的键,并添加按钮
        # print(key_value_list)

    def handleActivatedCheckBox2(self):
        checked_list = []  # 被选中的项目
        checked_index_list = []  # 选中项目的索引
        for index, checkBox in enumerate(self.checkBox_list):
            if checkBox.isChecked():
                checked_list.append(checkBox.text())
                checked_index_list.append(index)
        if not checked_list:  # 如果表为空则返回
            return
        combox_text = self.combox.currentText()
        comboxDate_text = self.comboxDate.currentText()
        data_list = []  # 获取某一月份的某一机构的数据,放入表中
        data = self.filter.get_data_by_date(comboxDate_text)
        data.pop('日期')
        for index, code in enumerate(data.pop('机构代码')):
            if code == combox_text:

                def findValue(dict):
                    for key in dict:
                        if type(dict[key]) != type(dict):
                            data_list.append(dict[key][index])
                        else:
                            findValue(dict[key])

                findValue(data)
                break
        checked_content_list = []
        for index in checked_index_list:
            checked_content_list.append(data_list[index])
        self.sc.draw_pie_compare(
            checked_content_list, checked_list,
            "机构" + combox_text + comboxDate_text + "储蓄占额比较")

    # menuFunction
    def filterFunc(self, q):
        if self.flag == 0:  # 判断表格是否读入
            self.sc.alert("请导入数据")
            return
        self.filter = Filter(self.filename)
        layout = self.sc.get_layout()
        # 删除layout中所用的Item
        for i in range(layout.count()):
            x = layout.itemAt(i)
            x.widget().deleteLater()
        try:
            self.ui.pushButton.disconnect()  # 解除按钮的所有绑定
        except:
            pass
        if q.text() == "getDataByInstitutionCode":
            # self.sc.add_vertical_spacer(layout)
            self.sc.add_textLabel("机构代码", layout)
            self.combox = self.sc.add_comboBox("cb", layout)
            institution_code = self.filter.get_institution_code()
            self.combox.addItems(institution_code)  # 给下拉菜单添加项目
            self.combox.activated.connect(
                self.handleActivatedInstitutionCode)  # 下拉菜单选中

        if q.text() == "getDateList":
            self.sc.setText("dateList as following...")
            for i in self.filter.get_date_list():
                self.sc.appendText(i)
        if q.text() == "getIndex":
            dict = self.filter.get_index_dict()
            self.sc.setText("indexList as following...")
            self.sc.printkeys(dict, 0)  # 打印字典中的键值
        if q.text() == "getDataByDate":
            self.sc.add_textLabel("日期", layout)
            self.combox = self.sc.add_comboBox("cb", layout)
            self.combox.addItems(self.filter.get_date_list())  # 给下拉菜单添加项目
            self.combox.activated.connect(self.handleActivatedDate)  # 下拉菜单选中
        if q.text() == "compareInstitution":
            self.sc.add_textLabel("请选择需要对比的机构", layout)
            code_list = self.filter.get_institution_code()
            self.checkBox_list = []
            for code in code_list:
                checkBox = self.sc.add_checkBox(code, layout)
                self.checkBox_list.append(checkBox)
            self.ui.pushButton.clicked.connect(self.handleActivatedCheckBox)
        if q.text() == "compareInnerStorage":
            self.sc.add_textLabel("请选择需要对比的机构以及月份", layout)
            self.combox = self.sc.add_comboBox("cb", layout)
            self.combox.addItems(
                self.filter.get_institution_code())  # 给下拉菜单添加项目
            self.comboxDate = self.sc.add_comboBox("cbDate", layout)
            self.comboxDate.addItems(self.filter.get_date_list())  # 给下拉菜单添加项目
            self.checkBox_list = []
            for name in self.filter.get_name_list():
                # 注意名字前有个空格
                if name == " 日期" or name == " 机构代码" or name == " 本期日均余额" or name == " 本期增长":
                    continue
                checkBox = self.sc.add_checkBox(name, layout)
                self.checkBox_list.append(checkBox)
            self.ui.pushButton.clicked.connect(self.handleActivatedCheckBox2)

    def importFile(self, q):
        # # 以下是打开文件对话框以及获取文件名的方法
        # import win32ui
        # dlg = win32ui.CreateFileDialog(1)
        # # dlg.SetOFNInitialDir('D:/Work')  # 设置打开文件对话框中的初始显示目录,无效
        # dlg.DoModal()
        # try:
        #     self.filename = dlg.GetPathName()  # 获取选择的文件名称
        #     fc = FileController(self.sc)
        #     self.sheet = fc.openXLS(self.filename)  # 返回表格内容
        #     self.flag = 1  # 文件已打开
        # except:
        #     print("fail")
        self.filename = "余额数据.xlsx"
        self.flag = 1  # 文件已打开

    def op(self, q):
        if self.flag == 0:  # 判断表格是否读入
            self.sc.alert("请导入数据")
            return
        text = q.text()
        opr = Opration(self.sheet, self.sc)
        if text == "getSum":
            opr.getSum()
        if text == "drawTendency":
            opr.drawTendency()
        if text == "addRationButton":
            opr.addRatioButton()

    def setWindowSize(self, q):
        self.sc.setWindowSize(q)
Beispiel #28
0
 def __init__(self):
     self.app = QtWidgets.QApplication(sys.argv)  # 生成应用
     self.window = QtWidgets.QMainWindow()  # 生成窗口q
     self.ui = Ui_MainWindow()  # 使用QTdesigner自动创建的类
     self.flag = 0
class CMWindow(QtWidgets.QWidget):
    def __init__(self, MainWindow):
        super().__init__(MainWindow)
        self.UI_obj = Ui_MainWindow()
        self.UI_obj.setupUi(MainWindow)
        self.color_dict = {'Blue': (0, 0, 255), 'Red': (255, 0, 0), 'Orange': (255, 127, 25)}
        self.UI_obj.fullimg = PainterLabel(5)
        self.UI_obj.fullimg.setAlignment(QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        self.UI_obj.patch_group = {}
        self.UI_obj.HR_group = {}
        self.UI_obj.set_root.clicked.connect(self.setRoot)
        self.UI_obj.show_Fullimg.clicked.connect(self.show_Full_img)
        self.UI_obj.set_Saveroot_bt.clicked.connect(self.setSave)
        self.UI_obj.crop_viewbt.clicked.connect(self.cropView)
        self.UI_obj.save_finalbt.clicked.connect(self.saveAll_results)
        self.UI_obj.patchTab.currentChanged['int'].connect(self.add_Tab)
        self.UI_obj.tab_1 = QtWidgets.QScrollArea(self.UI_obj.patchTab)
        self.UI_obj.tab_2 = QtWidgets.QScrollArea(self.UI_obj.patchTab)
        self.UI_obj.patchTab.addTab(self.UI_obj.tab_1, 'Patch Group 1')
        self.UI_obj.patchTab.addTab(self.UI_obj.tab_2, '+')
        self.UI_obj.fullimg.installEventFilter(self)
        self.UI_obj.patchTab.installEventFilter(self)
        self.UI_obj.fullimg.drawRecFlag = False

        self.UI_obj.sub_dir_list.activated[str].connect(self.onActivated)

    def setRoot(self):
        dir_root_path = QtWidgets.QFileDialog.getExistingDirectory(None,
                                                              "choose directory",
                                                              "/media/4T/Dizzy/BasicSR-master/Final_Images/2020-12-26_results/ori")
        if dir_root_path:
            self.UI_obj.imgDirRoot.addItem(dir_root_path)
            self.UI_obj.imgDirRoot.setFont(QtGui.QFont('Times', 11))
            self.UI_obj.imgDirRoot.setCurrentText(dir_root_path)
            self.subdirs = os.listdir(dir_root_path)
            self.UI_obj.sub_dir_list.clear()
            self.UI_obj.sub_dir_list.addItems(self.subdirs)
            self.UI_obj.sub_dir_list.setFont(QtGui.QFont('Times', 11))
            self.UI_obj.sub_dir_list.setCurrentText('HR')
            img_list = sorted(os.listdir(os.path.join(dir_root_path, 'HR')))

            self.UI_obj.img_list.clear()
            self.UI_obj.img_list.addItems(img_list)
            self.UI_obj.img_list.setFont(QtGui.QFont('Times', 11))


    def show_Full_img(self):
        s = os.path.join(str(self.UI_obj.imgDirRoot.currentText()),
                         str(self.UI_obj.sub_dir_list.currentText()),
                         str(self.UI_obj.img_list.currentText()))
        if os.path.exists(os.path.join(self.UI_obj.imgDirRoot.currentText(), 'HR', self.UI_obj.img_list.currentText()).split('.')[0] + '.png'):

            self.HR_path = os.path.join(self.UI_obj.imgDirRoot.currentText(), 'HR', self.UI_obj.img_list.currentText().split('.')[0] + '.png')
        elif os.path.join(self.UI_obj.imgDirRoot.currentText(), 'HR', self.UI_obj.img_list.currentText().split('.')[0] + '.jpg'):
            self.HR_path = os.path.join(self.UI_obj.imgDirRoot.currentText(), 'HR', self.UI_obj.img_list.currentText().split('.')[0] + '.jpg')

        if self.UI_obj.img_list.currentText():
            self.pixmap = QtGui.QPixmap(s)
            self.UI_obj.fullimg.setPixmap(self.pixmap)
            self.UI_obj.fullimg.adjustSize()
            # print(self.UI_obj.fullimg.size())
            self.UI_obj.fullimg_window.setBackgroundRole(QtGui.QPalette.Dark)
            self.UI_obj.fullimg_window.setWidget(self.UI_obj.fullimg)
            self.UI_obj.fullimg.setMouseTracking(True)
            self.UI_obj.fullimg.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
        else:
            QtWidgets.QMessageBox.warning(self,
                                          "Warning", "Please choose the Image Dir root first",
                                          QtWidgets.QMessageBox.Cancel)

    def setSave(self):
        dir_root_path = QtWidgets.QFileDialog.getExistingDirectory(None,
                                                                   "choose directory",
                                                                   "/media/4T/Dizzy/BasicSR-master/Final_Images/2020-12-26_results/ori")

        if dir_root_path:
                self.UI_obj.saveDirRoot.clear()
                self.UI_obj.saveDirRoot.addItem(dir_root_path)
                self.UI_obj.saveDirRoot.setFont(QtGui.QFont('Times', 11))



    def cropView(self):
        left, upper, h, w = self.UI_obj.fullimg.getRect()

        resize_flag = self.UI_obj.resize_combobox.currentText()

        cropped_img_dict = {}
        for subdir in self.subdirs:
            img_name = self.UI_obj.img_list.currentText().split('.')[0]
            if os.path.exists(os.path.join(self.UI_obj.imgDirRoot.currentText(), subdir, img_name + '.png')):
                img_name = img_name + '.png'
            elif os.path.exists(os.path.join(self.UI_obj.imgDirRoot.currentText(), subdir, img_name + '.jpg')):
                img_name = img_name + '.jpg'
            else:
                QtWidgets.QMessageBox.warning(self,
                                              "Warning", "{} is not exists!".format(os.path.join(self.UI_obj.imgDirRoot.currentText(), subdir, img_name + '.png')),
                                              QtWidgets.QMessageBox.Cancel)
            cropped_imgs, resize = crop(self.UI_obj.imgDirRoot.currentText(), subdir, img_name,
                                left, upper, h, w,
                                self.color_dict[self.UI_obj.edge_colorcbox.currentText()], self.UI_obj.edgeWidthLine.text(),
                                resize_flag)
            cropped_img_dict[subdir] = cropped_imgs

        if resize_flag == 'Crop square area':
            h, w = (max(h, w), max(h, w))

        HR_wRect = draw_HRrec(self.HR_path,
                              left, upper, h, w, self.color_dict[self.UI_obj.edge_colorcbox.currentText()], self.UI_obj.edgeWidthLine.text())




        content_widget = QtWidgets.QWidget()
        flay = QtWidgets.QGridLayout(content_widget)
        layout_idx, caption_idx = 0, 0
        tp_subdir = []
        for subdir in self.subdirs:
            p = cropped_img_dict[subdir]
            object = QtWidgets.QLabel('Text')
            object_label = QtWidgets.QLabel(subdir)
            object.setFixedSize(resize[0], resize[1])
            object_label.setFixedWidth(resize[1])
            object_label.setAlignment(QtCore.Qt.AlignCenter)
            qImg = QtGui.QImage(p.data, p.shape[1], p.shape[0], p.shape[1] * 3, QtGui.QImage.Format_RGB888)
            img = QtGui.QPixmap.fromImage(qImg).scaled(resize[0], resize[1])
            object.setPixmap(img)
            flay.addWidget(object, layout_idx // 3, layout_idx % 3)
            flay.addWidget(object_label, (layout_idx // 3) + 1, layout_idx % 3)
            tp_subdir.append(subdir)
            layout_idx += 1
            if (layout_idx // 3) % 2 == 1:
                layout_idx += 3

        showCrop_Position = QtWidgets.QPushButton(self.UI_obj.patchTab.currentWidget())
        showCrop_Position.setFixedSize(resize[0], resize[1])
        showCrop_Position.setText('Show crop positions \n in HR size')
        flay.addWidget(showCrop_Position, layout_idx // 3, layout_idx % 3)

        cropped_img_dict['HR_rect'] = HR_wRect
        self.UI_obj.patchTab.currentWidget().setWidget(content_widget)
        showCrop_Position.clicked.connect(self.show_crop_Pos)
        self.UI_obj.patch_group[self.UI_obj.patchTab.tabText(self.UI_obj.patchTab.currentIndex())] = cropped_img_dict
        self.UI_obj.HR_group[self.UI_obj.patchTab.tabText(self.UI_obj.patchTab.currentIndex())] = \
            {'Crop_position': (left, upper, h, w), 'Color_digits': self.color_dict[self.UI_obj.edge_colorcbox.currentText()],
             'Edge_width': self.UI_obj.edgeWidthLine.text(), 'Color_text': self.UI_obj.edge_colorcbox.currentText()}



    def show_crop_Pos(self):
        HR_wRect = self.UI_obj.patch_group[self.UI_obj.patchTab.tabText(self.UI_obj.patchTab.currentIndex())]['HR_rect']
        HR_window = QtWidgets.QDialog(self.UI_obj.patchTab)
        HR_img = QtWidgets.QLabel(HR_window)
        qImg = QtGui.QImage(HR_wRect.data, HR_wRect.shape[1], HR_wRect.shape[0], HR_wRect.shape[1] * 3, QtGui.QImage.Format_RGB888)
        img = QtGui.QPixmap.fromImage(qImg).scaled(HR_wRect.shape[1]/4, HR_wRect.shape[0]/4)
        HR_img.setPixmap(img)
        HR_window.setFixedSize(HR_wRect.shape[1]/4, HR_wRect.shape[0]/4)
        HR_window.show()


    def add_Tab(self):
        num_tab = self.UI_obj.patchTab.currentIndex()

        if self.UI_obj.patchTab.tabText(num_tab) == '+':
            self.UI_obj.new_tab = QtWidgets.QScrollArea()
            self.UI_obj.new_tab.setObjectName('tab_{}'.format(num_tab - 1))

            self.UI_obj.new_tab.setGeometry(self.UI_obj.tab_1.geometry())
            self.UI_obj.new_tab.setWidgetResizable(False)
            self.UI_obj.patchTab.insertTab(num_tab, self.UI_obj.new_tab, 'Patch Group {}'.format(num_tab+1))
            self.UI_obj.patchTab.setCurrentIndex(num_tab)


    def saveAll_results(self):

        if self.UI_obj.saveDirRoot:

            HR_img = np.array(Image.open(self.HR_path))
            img_name = os.path.basename(self.HR_path).split('.')[0]
            save_path_root = self.UI_obj.saveDirRoot.currentText()
            for hr_info in self.UI_obj.HR_group:
                left, upper, h, w = self.UI_obj.HR_group[hr_info]['Crop_position']
                color, edge_width = self.UI_obj.HR_group[hr_info]['Color_digits'], self.UI_obj.HR_group[hr_info]['Edge_width']
                HR_img = cv2.rectangle(HR_img, (left, upper), (left + h, upper + w), color, thickness=int(edge_width))


            pil = Image.fromarray(HR_img)
            img_name_format = '{}_{}_{}.png'.format(img_name, 'HR', 'Full_img')
            pil.save(os.path.join(save_path_root, img_name_format))

            for pg in self.UI_obj.patch_group:
                color_text = self.UI_obj.HR_group[pg]['Color_text']
                for subdir in self.UI_obj.patch_group[pg]:
                    if subdir != 'HR_rect':
                        pil = Image.fromarray(self.UI_obj.patch_group[pg][subdir])
                        img_name_format = '{}_{}_{}.png'.format(img_name, subdir, color_text)
                        pil.save(os.path.join(save_path_root, img_name_format))
        else:

            QtWidgets.QMessageBox.warning(self,
                                          "Warning", "Please choose the Save Dir root first",
                                          QtWidgets.QMessageBox.Cancel)




    def eventFilter(self, QObject, QEvent):
        if QObject == self.UI_obj.fullimg:
            if QEvent.type() == QtGui.QMouseEvent.MouseMove:
                self.UI_obj.statusBar.showMessage(
                    'Image size: {}, {}, current position: {}, {}'
                    .format(self.UI_obj.fullimg.frameGeometry().height(),
                            self.UI_obj.fullimg.frameGeometry().width(),
                            QEvent.y(),
                            QEvent.x()))
                return False
        return False

    def onActivated(self, text):
        dir_root_path = self.UI_obj.imgDirRoot.currentText()
        self.UI_obj.sub_dir_list.clear()
        self.UI_obj.sub_dir_list.addItems(self.subdirs)
        self.UI_obj.sub_dir_list.setFont(QtGui.QFont('Times', 11))
        self.UI_obj.sub_dir_list.setCurrentText(text)
        img_list = os.listdir(os.path.join(dir_root_path, text))

        self.UI_obj.img_list.clear()
        self.UI_obj.img_list.addItems(img_list)
        self.UI_obj.img_list.setFont(QtGui.QFont('Times', 11))







# class MouseTracker(QtWidgets.QWidget):
#     def __init__(self, img, pl):
#         super().__init__()
#         self.label = QtWidgets.QLabel(self)
#         self.label.resize(200, 40)
#         self.setMouseTracking(True)
#
#
#     def mouseMoveEvent(self, event):
#         self.label.setText('Mouse coords: ( %d : %d )' % (event.x(), event.y()))
#         # return 1