Esempio n. 1
0
class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        col = QColor(0, 0, 0) 

        self.btn = QPushButton('Dialog - pick a colour', self)
        self.btn.move(20, 20)

        self.btn.clicked.connect(self.showDialog)

        self.frm = QFrame(self)
        self.frm.setStyleSheet("QWidget { background-color: %s }" % col.name())
        self.frm.setGeometry(20, 60, 100, 100)            
        
        self.setGeometry(300, 300, 250, 380)
        self.setWindowTitle('Color dialog')
        self.show()
        
        
    def showDialog(self):
      
        col = QColorDialog.getColor()

        if col.isValid():
            self.frm.setStyleSheet("QWidget { background-color: %s }"
                % col.name())
Esempio n. 2
0
class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        color = QColor(0, 0, 0)

        self.button = QPushButton('Dialog', self)
        self.button.move(20, 20)
        self.button.clicked.connect(self.showDialog)
        
        self.frame = QFrame(self)
        self.frame.setStyleSheet("QWidget { background-color %s }"
                % color.name())
        self.frame.setGeometry(130, 22, 200, 200)

        self.setGeometry(300, 300, 450, 350)
        self.setWindowTitle('Color dialog')
        self.show()

    @S**t()
    def showDialog(self):
        color = QColorDialog.getColor()

        if color.isValid():
            self.frame.setStyleSheet("QWidget { background-color: %s}"
                    % color.name())
Esempio n. 3
0
class Example(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.col = QColor(0, 0, 0)

        redb = QPushButton('Red', self)
        redb.setCheckable(True)
        redb.move(10, 10)
        redb.clicked[bool].connect(self.setColor)

        greenb = QPushButton('Green', self)
        greenb.setCheckable(True)
        greenb.move(10, 60)
        greenb.clicked[bool].connect(self.setColor)

        blueb = QPushButton('Blue', self)
        blueb.setCheckable(True)  # 把这个按钮变为切换按钮(类似checkBox)
        blueb.move(10, 100)
        blueb.clicked[bool].connect(self.setColor)  # True, False切换

        self.square = QFrame(self)
        self.square.setGeometry(150, 20, 100, 100)
        self.square.setStyleSheet("QWidget { background-color: %s }" %
                                  self.col.name())

        self.setGeometry(300, 300, 600, 400)
        self.setWindowTitle("Toggle button")
        self.show()

    def setColor(self, pressed):

        source = self.sender()

        if pressed:
            val = 255
        else:
            val = 0

        # >< 金字塔范围
        # == case
        if source.text() == 'Red':
            self.col.setRed(val)
        elif source.text() == 'Green':
            self.col.setGreen(val)
        else:
            self.col.setBlue(val)

        self.square.setStyleSheet("QFrame { background-color: %s }" %
                                  self.col.name())
        '''
class Example(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.col = QColor(0, 0, 0)

        redb = QPushButton('Red', self)
        redb.setCheckable(True)
        redb.move(10, 10)

        redb.clicked[bool].connect(self.setColor)

        greenb = QPushButton('Green', self)
        greenb.setCheckable(True)
        greenb.move(10, 60)

        greenb.clicked[bool].connect(self.setColor)

        blueb = QPushButton('Blue', self)
        blueb.setCheckable(True)
        blueb.move(10, 110)

        blueb.clicked[bool].connect(self.setColor)

        self.square = QFrame(self)
        self.square.setGeometry(150, 20, 100, 100)
        self.square.setStyleSheet("QWidget { background-color: %s }" %
                                  self.col.name())

        self.setGeometry(300, 300, 300, 250)
        self.setWindowTitle('Toggle button')
        self.show()

    def setColor(self, pressed):

        source = self.sender()

        if pressed:
            val = 255
        else:
            val = 0

        if source.text() == "Red":
            self.col.setRed(val)
        elif source.text() == "Green":
            self.col.setGreen(val)
        else:
            self.col.setBlue(val)

        self.square.setStyleSheet("QFrame { background-color: %s }" %
                                  self.col.name())
Esempio n. 5
0
class Dialog(QFrame):
    def __init__(self, widget):
        QFrame.__init__(self, widget)

        self.setGeometry(QRect(0, 0, 800, 480))
        self.setStyleSheet(
            "font: 24pt 배달의민족 주아;" "background-color: rgba(0, 0, 0, 100);"
        )

        self.dialog = QFrame(self)
        self.dialog.setGeometry(QRect(200, 120, 400, 240))
        self.dialog.setStyleSheet("background-color: white;" "border-radius: 25px;")
Esempio n. 6
0
class UiInUse:
    def setupUi(self, widget):
        widget.resize(800, 480)

        self.frame_main = QFrame(widget)
        self.frame_main.setGeometry(QRect(0, 0, 800, 480))
        self.frame_main.setStyleSheet("QFrame {"
                                      "   background-color: rgb(241, 168, 23);"
                                      "}"
                                      "QLabel {"
                                      "   font: 20pt 배달의민족 주아;"
                                      "   color: white;"
                                      "}")

        self.picture_piano = QLabel(self.frame_main)
        self.picture_piano.setGeometry(QRect(320, 30, 160, 150))
        self.picture_piano.setPixmap(QPixmap(str(PATH_IMG / "Piano.png")))

        self.label_time = QLabel(self.frame_main)
        self.label_time.setGeometry(QRect(0, 180, 800, 40))
        self.label_time.setStyleSheet("font-size: 16pt;")
        self.label_time.setText("00:00:00")
        self.label_time.setAlignment(Qt.AlignCenter)

        self.label_name = QLabel(self.frame_main)
        self.label_name.setGeometry(QRect(0, 230, 800, 40))
        self.label_name.setStyleSheet("font-size: 20pt;")
        self.label_name.setText("홍길동")
        self.label_name.setAlignment(Qt.AlignCenter)

        self.label_in_use = QLabel(self.frame_main)
        self.label_in_use.setGeometry(QRect(0, 270, 800, 70))
        self.label_in_use.setStyleSheet("font-size: 32pt;")
        self.label_in_use.setText("사용 중")
        self.label_in_use.setAlignment(Qt.AlignCenter)

        self.button_quit = QPushButton(self.frame_main)
        self.button_quit.setGeometry(QRect(340, 360, 120, 60))
        self.button_quit.setText("종료")
        self.button_quit.setStyleSheet("QPushButton {"
                                       "   font: 20pt 배달의민족 주아;"
                                       "   color: white;"
                                       "   background-color: rgb(255, 0, 0);"
                                       "   border-radius: 10px;"
                                       "}"
                                       "QPushButton:hover {"
                                       "   color: rgb(120, 120, 120);"
                                       "   background-color: rgb(120, 0, 0);"
                                       "}")
Esempio n. 7
0
class PushButton(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.color = QColor(0, 0, 0)

        redButton = QPushButton('红', self)
        redButton.setCheckable(True)  #处于选中的状态
        redButton.move(10, 10)
        redButton.clicked[bool].connect(self.setColor)

        greenButton = QPushButton('绿', self)
        greenButton.setCheckable(True)
        greenButton.move(10, 60)
        greenButton.clicked[bool].connect(self.setColor)

        blueButton = QPushButton('蓝', self)
        blueButton.setCheckable(True)
        blueButton.move(10, 110)
        blueButton.clicked[bool].connect(self.setColor)

        self.square = QFrame(self)
        self.square.setGeometry(150, 20, 100, 100)

        self.square.setStyleSheet('QWidget{background-color:%s}' %
                                  self.color.name())
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('按钮控件')
        self.show()

    def setColor(self, pressed):
        source = self.sender()
        if pressed:
            val = 255
        else:
            val = 0
        if source.text() == '红':
            self.color.setRed(val)
        elif source.text() == '绿':
            self.color.setGreen(val)
        else:
            self.color.setBlue(val)
        self.square.setStyleSheet('QWidget{background-color:%s}' %
                                  self.color.name())
Esempio n. 8
0
class MyColorDialog(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        myColor = QColor(0, 0, 0)
        self.myButton = QPushButton('Press to Change Color', self)
        self.myButton.move(10, 50)
        self.myButton.clicked.connect(self.showColorDialog)
        self.myFrame = QFrame(self)
        self.myFrame.setStyleSheet("QWidget { background-color: %s }"
                                % myColor.name())
        self.myFrame.setGeometry(130, 22, 100, 100)
        self.setGeometry(300, 300, 250, 180)
        self.setWindowTitle('Color Dialog - Example')
        self.show()

    def showColorDialog(self):
        color = QColorDialog.getColor()
        if color.isValid():
            self.myFrame.setStyleSheet("QWidget {background-color: % s}"% color.name())
Esempio n. 9
0
class UiSignUp:
    def setupUi(self, widget):
        widget.resize(800, 480)

        self.frame_menu = QFrame(widget)
        self.frame_menu.setGeometry(QRect(0, 0, 800, 60))
        self.frame_menu.setStyleSheet(
            "QLabel {"
            "   color: white;"
            "   background-color: rgb(249, 138, 15);"
            "   font: 20pt 배달의민족 주아;"
            "}"
            "QPushButton {"
            "   color: white;"
            "   background-color: rgba(0, 0, 0, 0);"
            "   font: 16pt 배달의민족 주아;"
            "   border: none;"
            "   border-radius: 16px;"
            "}"
            "QPushButton:hover {"
            "   background-color: rgb(241, 219, 194);"
            "}")

        self.label_menu = QLabel(self.frame_menu)
        self.label_menu.setGeometry(QRect(0, 0, 800, 60))
        self.label_menu.setText("사용자 등록")
        self.label_menu.setAlignment(Qt.AlignCenter)

        img_home = QPixmap(str(PATH_IMG / "home.png"))
        self.button_home = QPushButton(self.frame_menu)
        self.button_home.setGeometry(QRect(10, 5, 90, 50))
        self.button_home.setIcon(QIcon(img_home))
        self.button_home.setIconSize(QSize(40, 40))
        self.button_home.setText("홈")

        self.frame_main = QFrame(widget)
        self.frame_main.setGeometry(QRect(0, 60, 800, 420))
        self.frame_main.setStyleSheet(
            "QFrame {"
            "   font: 20pt 배달의민족 주아;"
            "   background-color: white;"
            "}"
            "QLineEdit {"
            "   font: 20pt 배달의민족 주아;"
            "   border: 3px solid black;"
            "   border-radius: 10px;"
            "}"
            "QLineEdit:hover {"
            "   background-color: rgb(200, 200, 200);"
            "}"
            "QLineEdit:focus {"
            "   border-color: rgb(0, 85, 255);"
            "}")

        self.line_left = QFrame(self.frame_main)
        self.line_left.setGeometry(QRect(130, 50, 2, 80))
        self.line_left.setFrameShape(QFrame.VLine)
        self.line_left.setStyleSheet(
            "background-color: rgb(176, 176, 176); border: none;")

        self.line_right = QFrame(self.frame_main)
        self.line_right.setGeometry(QRect(670, 50, 2, 80))
        self.line_right.setFrameShape(QFrame.VLine)
        self.line_right.setStyleSheet(
            "background-color: rgb(176, 176, 176); border: none;")

        path_left = PATH_IMG / "arrow_left.png"
        path_right = PATH_IMG / "arrow_right.png"
        path_left_hover = PATH_IMG / "arrow_left_hover.png"
        path_right_hover = PATH_IMG / "arrow_right_hover.png"

        self.button_left = QPushButton(self.frame_main)
        self.button_left.setGeometry(QRect(30, 50, 80, 80))
        self.button_left.setStyleSheet("QPushButton {"
                                       f"   image: url({path_left});"
                                       "   border: none;"
                                       "}"
                                       "QPushButton:hover {"
                                       f"   image: url({path_left_hover});"
                                       "}")

        self.button_right = QPushButton(self.frame_main)
        self.button_right.setGeometry(QRect(690, 50, 80, 80))
        self.button_right.setStyleSheet("QPushButton {"
                                        f"  image: url({path_right});"
                                        "   border: none;"
                                        "}"
                                        "QPushButton:hover {"
                                        f"   image: url({path_right_hover});"
                                        "}")
Esempio n. 10
0
class DisplayWidgetGroup(QWidget):
    def __init__(self, parent, id):
        super().__init__(parent)
        self.displays = []
        self.groupID = id
        self.displayArea = parent

        self.minX = 1000000
        self.minY = 1000000

        self.maxX = 0
        self.maxY = 0

        self.labelFrame = QFrame(self)
        self.labelFrame.setFrameShape(QFrame.Box)
        self.labelFrame.setAutoFillBackground(True)

        p = self.labelFrame.palette()
        p.setColor(self.backgroundRole(), QColor(80, 80, 200, 20))
        self.labelFrame.setPalette(p)

        self.label = QLabel(self.labelFrame)
        self.label.setText(self.groupID)
        self.label.setFont(QFont("arial", 32))
        self.label.setAlignment(Qt.AlignCenter)

        self.globalBounds = [0, 0, self.width(), self.height()]
        self.widgetBounds = [0, 0, self.width(), self.height()]

    def AddDisplay(self, displayInfo):
        display = DisplayWidget(self, displayInfo)
        self.displays.append(display)

        dimensions = displayInfo["bounds"]

        self.minX = min(self.minX, dimensions[0])
        self.minY = min(self.minY, dimensions[1])

        self.maxX = max(self.maxX, (dimensions[2] + dimensions[0]))
        self.maxY = max(self.maxY, (dimensions[3] + dimensions[1]))

        self.labelFrame.raise_()

        self.UpdateDisplaysGroupBounds()

    def resizeEvent(self, event):
        self.labelFrame.setGeometry(0, 0, self.width(), self.height())
        self.label.setGeometry(0, 0, self.width(), self.height())

        f = QFont("ariel", self.FontSizeForWidth())
        self.label.setFont(f)

        for display in self.displays:
            display.SetWidgetBounds([0, 0, self.width(), self.height()])
            display.UpdateGeometry()

        return super().resizeEvent(event)

    def FontSizeForWidth(self):
        text = self.label.text()
        textSize = len(text)
        f = self.label.font()
        metrics = QFontMetrics(f)
        width = metrics.width(text)
        myWidth = self.label.width()
        size = 0
        if width < myWidth:
            direction = 1
        else:
            direction = -1
        while (True):
            f = QFont("Ariel", size + 1)
            mf = QFontMetrics(f)
            self.label.setFont(f)
            width = mf.width(text)
            if direction > 0:
                if width >= myWidth:
                    break
            else:
                if width <= myWidth:
                    break
            size = f.pointSize() + direction
        return size

    def UpdateGlobalBounds(self, bounds):
        self.globalBounds = bounds.copy()

    def SetWidgetBounds(self, bounds):
        self.widgetBounds = bounds.copy()

        for display in self.displays:
            display.SetWidgetBounds([0, 0, self.width(), self.height()])
            display.UpdateGeometry()

    def UpdateGeometry(self):

        scaleX = (self.widgetBounds[2] - self.widgetBounds[0]) / (
            self.globalBounds[2] - self.globalBounds[0])
        scaleY = (self.widgetBounds[3] - self.widgetBounds[1]) / (
            self.globalBounds[3] - self.globalBounds[1])

        posX = (
            (self.minX - self.globalBounds[0]) * scaleX) + self.widgetBounds[0]
        posY = (
            (self.minY - self.globalBounds[1]) * scaleY) + self.widgetBounds[1]

        width = (self.maxX - self.minX) * scaleX
        height = (self.maxY - self.minY) * scaleY

        self.setGeometry(posX, posY, width, height)

    def UpdateDisplaysGroupBounds(self):
        bounds = [
            self.minX, self.minY, self.maxX - self.minX, self.maxY - self.minY
        ]
        for display in self.displays:
            display.SetGroupBounds(bounds)

    def GetGlobalOffset(self):

        scaleX = (self.globalBounds[2] - self.globalBounds[0]) / (
            self.widgetBounds[2] - self.widgetBounds[0])
        scaleY = (self.globalBounds[3] - self.globalBounds[0]) / (
            self.widgetBounds[3] - self.widgetBounds[0])

        posX = ((self.pos().x() - self.widgetBounds[0]) *
                scaleX) + self.globalBounds[0]
        posY = ((self.pos().y() - self.widgetBounds[1]) *
                scaleY) + self.globalBounds[1]

        return [posX, posY]

    def CollidesWith(self, widget):
        bounds = [
            self.x(),
            self.y(),
            self.x() + self.width(),
            self.y() + self.height()
        ]
        other = [
            widget.x(),
            widget.y(),
            widget.x() + widget.width(),
            widget.y() + widget.height()
        ]

        return not (other[0] > bounds[2] or other[2] < bounds[0] or\
            other[1] > bounds[3] or other[3] < bounds[1])

    def mouseMoveEvent(self, event):
        if self.oldPos:
            deltaPos = (event.globalPos() - self.oldPos)
            self.move(self.x() + deltaPos.x(), self.y() + deltaPos.y())
            if self.displayArea.CheckCollision(self):
                self.move(self.x() - deltaPos.x(), self.y() - deltaPos.y())

        self.oldPos = event.globalPos()
        return super().mouseMoveEvent(event)

    def mousePressEvent(self, event):
        self.oldPos = event.globalPos()
        return super().mousePressEvent(event)

    def mouseReleaseEvent(self, event):
        self.oldPos = None
        return super().mouseReleaseEvent(event)
class Artigence(QMainWindow):
    def __init__(self):
        super(Artigence, self).__init__()

        # Basic Settings
        self.setGeometry(300, 200, 682, 422)
        self.setMinimumSize(QSize(682, 422))
        self.setMaximumSize(QSize(682, 422))
        self.setWindowIcon(QIcon("arti.PNG"))
        self.setWindowTitle("Artigence Home")

        # Color Scheme
        self.palette = QPalette()
        self.palette.setColor(self.palette.Window, QColor('#000000'))
        self.palette.setColor(self.palette.WindowText, QColor('#FFFFFF'))
        self.setPalette(self.palette)

        self.light_palette = QPalette()
        self.light_palette.setColor(self.light_palette.Window,
                                    QColor('#FFFFFF'))
        self.light_palette.setColor(self.light_palette.WindowText,
                                    QColor('#000000'))

        # Setting MenuBar
        self.menubar = QMenuBar(self)
        self.menubar.setGeometry(0, 0, 682, 21)

        self.date_menu = QMenu(self.menubar)
        self.date_menu.setTitle(str(datetime.now().strftime('%d-%m-%Y')))

        self.theme_menu = QMenu(self.menubar)
        self.theme_menu.setTitle('Theme')

        self.dark_theme = QAction('Dark Theme')
        self.dark_theme.setShortcut(QKeySequence('Ctrl+Shift+D'))
        self.theme_menu.addAction(self.dark_theme)
        self.dark_theme.triggered.connect(lambda: self.dark())

        self.light_theme = QAction('Light Theme')
        self.light_theme.setShortcut(QKeySequence('Ctrl+Shift+L'))
        self.theme_menu.addAction(self.light_theme)
        self.light_theme.triggered.connect(lambda: self.light())

        self.app_menu = QMenu(self.menubar)
        self.app_menu.setTitle('Apps')

        self.calculator_menu = QAction('Calculator')
        self.calculator_menu.setShortcut(QKeySequence('Alt+C'))
        self.app_menu.addAction(self.calculator_menu)
        self.calculator_menu.triggered.connect(lambda: self.calculator_func())

        self.game_menu = QAction('GameHub')
        self.game_menu.setShortcut(QKeySequence('Alt+G'))
        self.app_menu.addAction(self.game_menu)
        self.game_menu.triggered.connect(lambda: self.games_func())

        self.music_menu = QAction('Muse (Music)')
        self.music_menu.setShortcut(QKeySequence('Alt+M'))
        self.app_menu.addAction(self.music_menu)
        self.music_menu.triggered.connect(lambda: self.music_func())

        self.news_menu = QAction('News')
        self.news_menu.setShortcut(QKeySequence('Alt+E'))
        self.app_menu.addAction(self.news_menu)
        self.news_menu.triggered.connect(lambda: self.news_func())

        self.notepad_menu = QAction('Notepad')
        self.notepad_menu.setShortcut(QKeySequence('Alt+N'))
        self.app_menu.addAction(self.notepad_menu)
        self.notepad_menu.triggered.connect(lambda: self.notepad_func())

        self.pronunciator = QAction('Pronunciator')
        self.pronunciator.setShortcut(QKeySequence('Alt+P'))
        self.app_menu.addAction(self.pronunciator)
        self.pronunciator.triggered.connect(lambda: self.pronunciator_func())

        self.translate_menu = QAction('Translate')
        self.translate_menu.setShortcut(QKeySequence('Alt+T'))
        self.app_menu.addAction(self.translate_menu)
        self.translate_menu.triggered.connect(lambda: self.translate_func())

        self.weather_menu = QAction('Weather')
        self.weather_menu.setShortcut(QKeySequence('Alt+W'))
        self.app_menu.addAction(self.weather_menu)
        self.weather_menu.triggered.connect(lambda: self.weather_func())

        self.setMenuBar(self.menubar)
        self.menubar.addAction(self.date_menu.menuAction())
        self.menubar.addAction(self.theme_menu.menuAction())
        self.menubar.addAction(self.app_menu.menuAction())

        # Creating Widgets
        self.query = QLineEdit(self)
        self.query.setGeometry(QRect(20, 30, 451, 41))
        self.query.setMinimumSize(QSize(451, 41))
        self.query.setMaximumSize(QSize(451, 41))
        self.query.setPlaceholderText("Enter your Query Here:")
        self.query.setFont(QFont('Roboto', 16))
        self.query.setClearButtonEnabled(True)

        self.update = QPushButton(self)
        self.update.setGeometry(QRect(491, 30, 171, 41))
        self.update.setMinimumSize(QSize(1, 1))
        self.update.setMaximumSize(QSize(171, 51))
        self.update.setText("What's New in the Updates?")
        self.update.setCursor(QCursor(Qt.PointingHandCursor))

        self.suggestions = QLabel(self)
        self.suggestions.setGeometry(QRect(20, 220, 111, 31))
        self.suggestions.setMinimumSize(QSize(111, 31))
        self.suggestions.setMaximumSize(QSize(111, 31))
        self.suggestions.setText("Suggestions:")
        self.suggestions.setFont(QFont('Roboto', 14))

        self.chrome = QPushButton(self)
        self.chrome.setGeometry(QRect(20, 260, 91, 31))
        self.chrome.setCursor(QCursor(Qt.PointingHandCursor))
        self.chrome.setText('Open Chrome')

        self.games = QPushButton(self)
        self.games.setGeometry(QRect(420, 260, 91, 31))
        self.games.setCursor(QCursor(Qt.PointingHandCursor))
        self.games.setText('Games')

        self.cmd = QPushButton(self)
        self.cmd.setGeometry(QRect(160, 260, 91, 31))
        self.cmd.setCursor(QCursor(Qt.PointingHandCursor))
        self.cmd.setText('Open Cmd')

        self.joke = QPushButton(self)
        self.joke.setGeometry(QRect(160, 310, 91, 31))
        self.joke.setCursor(QCursor(Qt.PointingHandCursor))
        self.joke.setText('Joke Please!!')

        self.music = QPushButton(self)
        self.music.setGeometry(QRect(290, 260, 91, 31))
        self.music.setCursor(QCursor(Qt.PointingHandCursor))
        self.music.setText('Music')

        self.youtube = QPushButton(self)
        self.youtube.setGeometry(QRect(290, 310, 91, 31))
        self.youtube.setCursor(QCursor(Qt.PointingHandCursor))
        self.youtube.setText('Youtube')

        self.time = QPushButton(self)
        self.time.setGeometry(QRect(20, 310, 91, 31))
        self.time.setCursor(QCursor(Qt.PointingHandCursor))
        self.time.setText('Tell Time')

        self.weather = QPushButton(self)
        self.weather.setGeometry(QRect(420, 310, 91, 31))
        self.weather.setCursor(QCursor(Qt.PointingHandCursor))
        self.weather.setText('Weather')

        self.calculator = QPushButton(self)
        self.calculator.setGeometry(QRect(550, 260, 101, 31))
        self.calculator.setCursor(QCursor(Qt.PointingHandCursor))
        self.calculator.setText('Calculator')

        self.wikipedia = QPushButton(self)
        self.wikipedia.setGeometry(QRect(550, 310, 101, 31))
        self.wikipedia.setCursor(QCursor(Qt.PointingHandCursor))
        self.wikipedia.setText('India Wikipedia')

        self.news = QPushButton(self)
        self.news.setGeometry(QRect(20, 360, 91, 31))
        self.news.setCursor(QCursor(Qt.PointingHandCursor))
        self.news.setText('Latest News')

        self.meaning = QPushButton(self)
        self.meaning.setGeometry(QRect(420, 360, 231, 31))
        self.meaning.setCursor(QCursor(Qt.PointingHandCursor))
        self.meaning.setText('Meaning of Obsolete (or any word)')

        self.harry_potter = QPushButton(self)
        self.harry_potter.setGeometry(QRect(290, 360, 91, 31))
        self.harry_potter.setCursor(QCursor(Qt.PointingHandCursor))
        self.harry_potter.setText('Harry Potter')

        self.translate = QPushButton(self)
        self.translate.setGeometry(QRect(160, 360, 91, 31))
        self.translate.setCursor(QCursor(Qt.PointingHandCursor))
        self.translate.setText('Open Translate')

        self.line = QFrame(self)
        self.line.setGeometry(QRect(20, 200, 661, 16))
        self.line.setFrameShape(QFrame.HLine)
        self.line.setFrameShadow(QFrame.Sunken)

        self.label = QLabel(self)
        self.label.setGeometry(QRect(20, 100, 631, 91))
        self.label.setFont(QFont('Roboto', 12))
        self.label.setTextFormat(Qt.AutoText)
        self.label.setWordWrap(True)

        self.wish()

        # Making the Widgets Functional
        self.query.returnPressed.connect(lambda: self.on_enter())
        self.query.returnPressed.connect(lambda: self.clear_text())

        self.update.clicked.connect(lambda: self.update_func())
        self.music.clicked.connect(lambda: self.music_func())
        self.games.clicked.connect(lambda: self.games_func())
        self.calculator.clicked.connect(lambda: self.calculator_func())
        self.weather.clicked.connect(lambda: self.weather_func())
        self.news.clicked.connect(lambda: self.news_func())
        self.translate.clicked.connect(lambda: self.translate_func())
        self.time.clicked.connect(lambda: self.time_func())
        self.joke.clicked.connect(lambda: self.joke_func())
        self.youtube.clicked.connect(lambda: self.youtube_func())
        self.wikipedia.clicked.connect(lambda: self.wikipedia_func())
        self.chrome.clicked.connect(lambda: self.chrome_func())
        self.cmd.clicked.connect(lambda: self.cmd_func())
        self.meaning.clicked.connect(lambda: self.meaning_func())
        self.harry_potter.clicked.connect(lambda: self.potter_func())

    def pronunciator_func(self):
        self.speak('Opening Pronunciator')
        from pronunciator import Pronunciator
        self.pronunciator_win = Pronunciator()
        self.pronunciator_win.show()

    def pong_func(self):
        import pong

    def notepad_func(self):
        self.speak('Opening Notepad')
        from notepad import Notepad
        self.notepad_win = Notepad()
        self.notepad_win.show()

    def update_func(self):
        os.startfile('Each Version Updates.txt')

    def translate_func(self):
        self.speak(
            'Opening Translate\nPlease Wait as opening Translate may take up to 4-5 seconds'
        )
        from translate import Translate
        self.translate_win = Translate()
        self.translate_win.show()

    def games_func(self):
        self.speak('Opening GameHub')
        from games import GameHub
        self.game_win = GameHub()
        self.game_win.show()

    def weather_func(self):
        self.speak('Opening Weather.')
        from weather import Weather
        self.weather_win = Weather()
        self.weather_win.show()

    def music_func(self):
        self.speak('Opening Muse')
        from music import Music
        self.music_win = Music()
        self.music_win.show()

    def calculator_func(self):
        self.speak('Opening Calculator.')
        from calculator import Calculator
        self.calculator_win = Calculator()
        self.calculator_win.show()

    def news_func(self):
        self.speak('Opening News.')
        from news import News
        self.news_win = News()
        self.news_win.show()
        self.speak(
            'Welcome to News.\nThese are the latest international headlines according to BBC News Network.'
        )

    def chrome_func(self):
        try:
            chrome_path = 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
            os.startfile(chrome_path)
            self.speak('Opening Chrome.')
        except Exception:
            self.speak(
                'No Google Chrome installation found on the host device.')

    def cmd_func(self):
        cmd_path = 'C:\\Windows\\system32\\cmd.exe'
        os.startfile(cmd_path)
        self.speak('Opening Command Prompt.')

    def time_func(self):
        question = 'time'
        app_id = 'LLQ4QY-A7K3LEL4T8'
        client = wolframalpha.Client(app_id)
        res = client.query(question)
        answer = next(res.results).text
        self.speak(answer)

    def joke_func(self):
        self.speak(pyjokes.get_joke())

    def youtube_func(self):
        webbrowser.open('https://www.youtube.com')
        self.speak('Opening Youtube.')

    def wikipedia_func(self):
        try:
            self.speak('Searching Wikipedia. Please Wait...')
            query = 'India'.replace('wikipedia', '')
            result = wikipedia.summary(query, sentences=1)
            self.speak('According to Wikipedia...')
            self.speak(result)
        except Exception as e:
            self.speak(e)

    def meaning_func(self):
        question = 'obsolete'
        app_id = 'LLQ4QY-A7K3LEL4T8'
        client = wolframalpha.Client(app_id)
        res = client.query(question)
        answer = next(res.results).text
        self.speak(answer)

    def potter_func(self):
        new = 2
        google_url = "http://google.com/?#q="
        webbrowser.open(google_url + 'Harry Potter', new=new)

    def clear_text(self):
        self.query.clear()

    def on_enter(self):
        user_query = self.query.text().lower()

        if 'wikipedia' in user_query:
            try:
                self.speak('Searching Wikipedia. Please Wait...')
                user_query = user_query.replace('wikipedia', '')
                result = wikipedia.summary(user_query, sentences=1)
                self.speak('According to Wikipedia...')
                self.speak(result)
            except Exception as e:
                self.speak('Please try again later.')
                self.speak(e)

        elif 'youtube' in user_query:
            webbrowser.open('https://www.youtube.com')
            self.speak('Opening Youtube.')

        elif 'google' in user_query:
            webbrowser.open('https://www.google.com/')
            self.speak('Opening Google.')

        elif 'chrome' in user_query:  # You'll have to download google chrome first on your desktop/pc.
            try:
                chrome_path = 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
                os.startfile(chrome_path)
                self.speak('Opening Chrome')
            except Exception:
                self.speak(
                    'No Google Chrome installation found on the host device.')

        elif 'cmd' in user_query:
            cmd_path = 'C:\\Windows\\system32\\cmd.exe'
            os.startfile(cmd_path)
            self.speak('Opening Command Prompt.')

        elif 'control panel' in user_query:

            cp_path = 'C:\\Windows\\system32\\control.exe'
            os.startfile(cp_path)
            self.speak('Opening Control Panel.')

        elif 'bye' in user_query or 'goodbye' in user_query or 'good night' in user_query or 'see you later' in user_query:
            self.speak(random.choice(self.bye))
            sys.exit()

        elif 'hello' in user_query or 'hi' in user_query:
            self.speak(random.choice(self.hello))

        elif 'joke' in user_query:
            self.speak(pyjokes.get_joke())

        elif 'who are you' in user_query:
            self.speak('I am Artigence, your artificial intelligence.')

        elif 'map' in user_query or 'maps' in user_query:
            self.speak('Opening Google Maps.')
            webbrowser.open("https://www.google.com/maps")

        elif 'open calculator' in user_query or 'calculator' in user_query:
            self.calculator_func()

        elif 'news' in user_query:
            self.news_func()
            self.speak(
                'Welcome to News.\nThese are the latest international headlines according to BBC News Network.'
            )

        elif 'weather' in user_query:
            self.weather_func()

        elif 'games' in user_query:
            self.games_func()

        elif 'pronunciator' in user_query or 'pronounce' in user_query:
            self.pronunciator_func()

        elif 'translate' in user_query:
            self.translate_func()

        elif 'music' in user_query:
            self.music_func()

        elif 'notepad' in user_query:
            self.notepad_func()

        else:
            try:
                question = user_query
                app_id = 'LLQ4QY-A7K3LEL4T8'
                client = wolframalpha.Client(app_id)
                res = client.query(question)
                answer = next(res.results).text
                self.label.setText(answer)
                self.label.adjustSize()

            except:
                new = 2
                google_url = "http://google.com/?#q="
                query = user_query
                webbrowser.open(google_url + query, new=new)

    # The A.I. will speak through this function
    def speak(self, audio):
        self.engine = pyttsx3.init('sapi5')
        voices = self.engine.getProperty('voices')
        self.engine.setProperty('voice', voices[1].id)
        self.engine.setProperty('rate', 165)
        self.label.setText(audio)
        self.engine.say(audio)
        self.engine.runAndWait()
        self.label.clear()

    def wish(self):
        hour = int(datetime.now().hour)
        if 0 <= hour < 12:
            self.speak('Good Morning.')
        elif 12 <= hour < 18:
            self.speak('Good Afternoon.')
        else:
            self.speak('Good Evening.')

        self.speak('I am Artigence.')
        self.speak('How may I help you today')

    hello = ['Kon\'nichiwa', 'Ciao', 'Hola', 'Bonjour', 'Hello', 'Hi', 'Hiya']
    bye = [
        'Adios', 'Goodbye', 'Bye-Bye', 'See you next time.', 'Artigence Out.',
        'It was nice talking to you sir. Have a nice day.'
    ]

    def dark(self):
        self.setPalette(self.palette)

    def light(self):
        self.setPalette(self.light_palette)
Esempio n. 12
0
class ExtraWindow(QtWidgets.QDialog):
    def __init__(self, parent, edit=False, path_c=None):
        super().__init__(parent)
        self.meta = None
        if edit:
            self.path_c = path_c
            self.meta = MetaDataR(self.path_c.get_metadata_path())
        else:
            self.path_c = None
            self.meta = _make_blank_metadata()

        #self.path_c = f'podaci{os.path.sep}__podaci\saimenom.csv

        #self.load_data("podaci\naziv_tabele.json")

        #print(self.meta)
        #print(self.path_c)

        #self.path_c = f'podaci{os.path.sep}__' tu treba da bude ono sto je korisnik nazvao tabelu,podaci\studenti
        # napraviti funkciju koja proverava da li su dve putanje iste is_save postoji
        #napraviti funkciju koja prolazi kroz odabrani folder(podaci) hard cod i za svaki file u njemu proverava
        # da li je isti kao fajl koji smo kreirali

        self.extra_table = ExtraTable(self)

        #self.extra_table.cellClicked.connect(self.extra_table.current_column_name)

        self.setWindowTitle("customer - Table")
        self.setWindowIcon(QtGui.QIcon("assets/img/icons8-edit-file-64.png"))

        self.resize(662, 438)

        self.save_table_changes = QPushButton("Save table changes", self)
        self.save_table_changes.setGeometry(390, 290, 251, 31)

        self.add_table_main = QPushButton("Add Column ", self)
        self.add_table_main.setGeometry(390, 260, 251, 28)
        self.add_table_main.clicked.connect(self.add_column)

        self.delet_table_column = QPushButton("Delet table column", self)
        self.delet_table_column.setGeometry(390, 330, 251, 31)
        self.delet_table_column.clicked.connect(self.remove_row)

        self.not_null_box = QCheckBox("Not Null", self)
        self.not_null_box.setGeometry(220, 330, 81, 61)

        self.colm_name_label = QLabel("Column Name:", self)
        self.colm_name_label.setGeometry(10, 250, 111, 41)

        self.table_name_label_2 = QLabel("Table Name", self)
        self.table_name_label_2.setGeometry(10, 10, 91, 21)

        self.comn_name_line_edit = QLineEdit(self)
        self.comn_name_line_edit.setGeometry(110, 260, 151, 22)
        #self.comn_name_line_edit.clicked.connect(self.extra_table.current_column_name)

        self.data_type_label = QLabel("Data Type", self)
        self.data_type_label.setGeometry(10, 300, 61, 16)

        self.data_type_line_edit = QLineEdit(self)
        self.data_type_line_edit.setGeometry(110, 300, 151, 22)

        self.table_name_line_edit = QLineEdit(self)
        self.table_name_line_edit.setGeometry(110, 10, 391, 22)

        self.foreign_key_box = QCheckBox("Foreign Key", self)
        self.foreign_key_box.setGeometry(120, 330, 91, 61)

        self.primary_key_box = QCheckBox("Primary Key", self)
        self.primary_key_box.setGeometry(20, 330, 111, 61)

        self.frame = QFrame(self)
        self.frame.setGeometry(0, 390, 661, 51)
        self.frame.setStyleSheet(u"background-color: rgb(45,45,45);")
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)

        self.cancel_button = QPushButton("Cancel button", self.frame)
        self.cancel_button.setGeometry(550, 10, 111, 28)

        self.cancel_button.setStyleSheet(
            u"background-color: rgb(255,255,255);")
        self.add_table_button = QPushButton("Add table", self.frame)

        self.add_table_button.setGeometry(442, 10, 101, 28)
        self.add_table_button.setStyleSheet(
            u"background-color: rgb(255,255,255);")

        #self.tables()

        self.show()

    def add_column_infomation(self):
        self.meta["headers"].append({
            "name":
            self.comn_name_line_edit.text(),
            "is_primary":
            self.primary_key_box.isChecked(),
            "is_foreign_key":
            self.foreign_key_box.isChecked(),
            "data_type":
            self.data_type_line_edit.text(),
            "predefined_values":
            "nesta",
            "not_null":
            self.not_null_box.isChecked(),
        })
        #iz tabele treba da se poziva row sa tim podacima

    def current_row(self):
        return self.extra_table.currentRow()

    #save column changes

    #kada korisnik kilkne na kolonu koja vec postoji nje podaci treba da se otvore u
    # input poljima ako je korisnik stavio neku izmjenu u tim poljima u tabeli treba da se sacuvaju te izmene

    #funkcija koja ce za objekat iz metaheadersa da ubacuje u tabelu

    def add_column(self):
        self.add_column_infomation()

        #headers = self.get_headers_names()

        row = self.extra_table.rowCount()
        self.extra_table.insertRow(row)
        #print(headers)

        self.extra_table.setItem(
            row, 0,
            QtWidgets.QTableWidgetItem(str(self.meta["headers"][row]["name"])))
        self.extra_table.setItem(
            row, 1,
            QtWidgets.QTableWidgetItem(
                str(self.meta["headers"][row]["data_type"])))
        self.extra_table.setItem(
            row, 2,
            QtWidgets.QTableWidgetItem(
                str(self.meta["headers"][row]["is_primary"])))
        self.extra_table.setItem(
            row, 3,
            QtWidgets.QTableWidgetItem(
                str(self.meta["headers"][row]["is_foreign_key"])))
        self.extra_table.setItem(
            row, 4,
            QtWidgets.QTableWidgetItem(
                str(self.meta["headers"][row]["not_null"])))
        self.extra_table.setItem(
            row, 5,
            QtWidgets.QTableWidgetItem(
                str(self.meta["headers"][row]["predefined_values"])))

        #proveri da li su sve vrednosti stavljenje name i type
        # moram da ucitam blanko podatke koji su prazni nemaju nista,
        # preko putanje hard kodovati prilikom sava

    def remove_row(self):
        indexes = self.extra_table.selectionModel().selectedRows()
        if len(indexes) != 1:
            self.show_popup()
            return
        self.extra_table.removeRow(indexes[0].row())

    def show_popup(self):
        msg = QMessageBox()
        msg.setWindowTitle("Fatal Error")
        msg.setText("Post Error! error code = 503")
        msg.setIcon(QMessageBox.Critical)
        msg.setStandardButtons(QMessageBox.Ok)
        msg.setInformativeText("Pleas select a row you want to delet!")

        msg.buttonClicked.connect(self.popup_button)
        execute = msg.exec_()

    def popup_button(self, i):
        print(i.text())
class PreprocessingImageWindow(QMainWindow):

    def close_application(self):
        """
            This function close the window.
        """
        sys.exit()
    
    def save(self) :
        self.dico = saveColumn1Dataset (self.dataset_path)
        saveColumn2Dataset (self.training_data, self.dico, self.file_name)
    
    def showTable(self):
        """
            This function display the corresponding matrix to an image
        """
        self.tableWidget.setVisible (True)
        if hasattr (self, 'image') :
            self.image.setVisible (False)
        self.pushButton_table.setEnabled (False)
        self.pushButton_next.setEnabled(True)
        global index_data_pre
    
        self.frame_3.setGeometry (QtCore.QRect (10, 180, 1000, 450))
        self.tableWidget.setRowCount(int (globals.height_m))
        self.tableWidget.setColumnCount(int (globals.length_m))
        matrix_image, id_class = self.training_data[globals.index_data_pre]
        for i, row in enumerate (matrix_image) :
            for j, val in enumerate (row) :
                self.tableWidget.setItem (i, j, QTableWidgetItem (str (val)))
    
    def preprocess(self):
        """
            This function preprocess an image dataset.
        """
        if self.dataset_path != None :
            if self.input_length.text() == "0" or self.input_length.text() == "":
                self.input_length.setText("30")
    
            if self.input_height.text() == "0" or self.input_height.text() == "":
                self.input_height.setText("30")
    
            # Setting values for matrix sizes
        global length_m
        global height_m
        globals.length_m = int(self.input_length.text())
        globals.height_m = int(self.input_height.text())
        ## Preprocessing
        global input_array
        global output_array
        f = open(self.dataset_path,'r')
        categories = list()
        f.readline()
        for ligne in f.readlines() :
            var=ligne.strip().split(',')
            classe=var[1] #class
            if classe not in categories :
                categories.append(classe)
        self.training_data = Preprocessing (self.dataset_path, self.file_path)
        for i in range (len (self.training_data)) :
            matrix, id_class = self.training_data[i]
            globals.input_array.append (matrix)
            globals.output_array.append (categories[id_class])
        self.start.setEnabled (False)
        self.input_height.setEnabled(False)
        self.input_length.setEnabled (False)
        self.pushButton_table.setEnabled (True)
        self.pushButton_save.setEnabled (True)


    def open_dataset (self) :
        """
            This function looks for the csv file and initializes the Window attributes.
        """
        global dataset_name
        dlg = QFileDialog()
        dlg.setFileMode(QFileDialog.AnyFile)
        dlg.selectNameFilter("Csv data files (*.csv)")
        dlg.setNameFilter("Arff data files (*.arff) ;; Csv data files (*.csv) ;; All files (*.*)")
        filenames = []
        if dlg.exec_():
            filenames = dlg.selectedFiles()
            f = open(filenames[0], 'r')
            self.dataset_path = str(filenames[0])
            with f:
                self.textEdit.setText(filenames[0].split('/')[-1])
                self.file_name = filenames[0].split('/')[-1].split('.')[0]
        if self.dataset_path != None :
            self.file_path = os.path.dirname(self.dataset_path) + globals.directory
            globals.dataset_name = self.file_name
    
        ## RESET
        global input_height
        global input_length
        global index_data
        global index_data_pre
        global input_array
        global output_array
    
        globals.input_height = 0
        globals.input_length = 0
        globals.index_data = 0
        globals.index_data_pre = 0
        globals.input_array = []
        globals.output_array = []
        self.frame_3.setGeometry(QtCore.QRect(10, 180, 1000, 450))
        self.pushButton_next.setEnabled (False)
        self.pushButton_previous.setEnabled (False)
        self.start.setEnabled (False)
        self.valider.setEnabled(True)
        self.pushButton_save.setEnabled (False)
        self.pushButton_table.setEnabled (False)
        if hasattr (self, 'tableWidget') :
            self.tableWidget.setVisible (False)
        if hasattr (self, 'image') :
            self.image.setVisible (False)



    def get_dataset_information(self):
        """
            This function gets information about the dataset such as the number of instances and the number of classes.
        """
        text="Nombre d'instances: "+str(get_number_instances(self.dataset_path))
        self.label_instances.setText(text)
        text = "Nombre de classes: " + str (get_number_class (self.dataset_path))
        self.label_classes.setText(text)
    
        self.input_height.setEnabled(True)
        self.input_length.setEnabled(True)
        self.valider.setEnabled (False)
        self.start.setEnabled(True)
        self.pushButton_next.setEnabled (True)
        if hasattr (self, 'training_data') :
            self.pushButton_table.setEnabled (True)
    
        self.frame_3.setGeometry (QtCore.QRect (250, 180, 500, 450))
        if not hasattr (self, 'image') :
            self.image = QLabel (self.frame_3)
            self.image.setGeometry (QtCore.QRect (0,0,500, 450))
            self.image.setObjectName ("image")
        image_list = []
        global index_data
        csv_file = open (self.dataset_path, "r")
        csv_file.readline()
        for line in csv_file.readlines() :
            var = line.strip().split(',')
            image_list.append (var[0])
        csv_file.close()
        self.image.setPixmap (QtGui.QPixmap (self.file_path + image_list[globals.index_data]).scaled (500, 450))
        self.image.show()




    def previous_state(self):
        """
            This function returns to the previous instance in the dataset.
        """
        global index_data
        global index_data_pre
        if self.pushButton_table.isEnabled() or not hasattr(self, 'training_data'):
            if globals.index_data - 1 >= 0 :
                globals.index_data -= 1
            if globals.index_data - 1 < 0:
                self.pushButton_next.setEnabled(True)
                self.pushButton_previous.setEnabled(False)
    
        else :
            if globals.index_data_pre - 1 >= 0 :
                globals.index_data_pre -= 1
            if globals.index_data_pre - 1 < 0:
                self.pushButton_next.setEnabled(True)
                self.pushButton_previous.setEnabled(False)
    
        if not self.valider.isEnabled () and not hasattr(self, "training_data"):
            if hasattr (self, 'training_data') and self.start.isEnabled():
                self.pushButton_table.setEnabled(False)
            elif hasattr (self, 'training_data') :
                self.pushButton_table.setEnabled (True)
    
            self.frame_3.setGeometry (QtCore.QRect (250, 180, 500, 450))
            if not hasattr (self, 'image') :
                self.image = QLabel (self.frame_3)
                self.image.setGeometry (QtCore.QRect (0,0,500, 450))
                self.image.setObjectName ("image")
            image_list = []
            global index_data
            csv_file = open (self.dataset_path, "r")
            csv_file.readline()
            for line in csv_file.readlines() :
                var = line.strip().split(',')
                image_list.append (var[0])
            csv_file.close()
    
            self.image.setPixmap (QtGui.QPixmap (self.file_path + image_list[globals.index_data]).scaled (500, 450))
            self.image.show()
        else :
            self.showTable()


    def next_state(self):
        """
            This function goes to the next instance in the dataset.
        """
        global index_data
        global index_data_pre
        if self.pushButton_table.isEnabled() or not hasattr( self, 'training_data' ): # Image Mode
            if globals.index_data + 1 < get_number_instances (self.dataset_path):
                globals.index_data += 1
            if globals.index_data + 1 >= get_number_instances(self.dataset_path):
                self.pushButton_next.setEnabled(False)
                self.pushButton_previous.setEnabled(True)
    
        else :
            if globals.index_data_pre + 1 < get_number_instances (self.dataset_path) * 2:
                globals.index_data_pre += 1
            if globals.index_data_pre + 1 >= get_number_instances(self.dataset_path):
                self.pushButton_next.setEnabled(False)
                self.pushButton_previous.setEnabled(True)
        if not self.valider.isEnabled () and not hasattr (self, "training_data"):
            if hasattr (self, 'training_data') and self.start.isEnabled():
                self.pushButton_table.setEnabled(False)
            elif hasattr (self, 'training_data') :
                self.pushButton_table.setEnabled (True)
    
            self.frame_3.setGeometry (QtCore.QRect (250, 180, 500, 450))
            if not hasattr (self, 'image') :
                self.image = QLabel (self.frame_3)
                self.image.setGeometry (QtCore.QRect (0,0,500, 450))
                self.image.setObjectName ("image")
            image_list = []
            global index_data
            csv_file = open (self.dataset_path, "r")
            csv_file.readline()
            for line in csv_file.readlines() :
                var = line.strip().split(',')
                image_list.append (var[0])
            csv_file.close()
    
            self.image.setPixmap (QtGui.QPixmap (self.file_path + image_list[globals.index_data]).scaled (500, 450))
            self.image.show()
        else :
            self.showTable ()

## GUI
    
    def __init__(self, *args, **kwargs):
        super(PreprocessingImageWindow, self).__init__(*args, **kwargs)
        self.file_path = None
        self.file_name = None
        self.dataset_path = None


        self.setObjectName("self")
        self.resize(1280, 720)
        self.setAutoFillBackground(True)
        self.setFixedSize(1280, 720)
    
        self.centralwidget = QWidget(self)
        self.centralwidget.setAutoFillBackground(True)
        self.centralwidget.setObjectName("centralwidget")



        self.gridLayout = QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.tabWidget = QTabWidget(self.centralwidget)
        self.tabWidget.setAutoFillBackground(True)
        self.tabWidget.setObjectName("tabWidget")


        ## INFO BOX:
        self.tab1 = QWidget()
        self.tab1.setAutoFillBackground(True)
        self.tab1.setObjectName("tab1")
        self.frame = QFrame(self.tab1)
        self.frame.setGeometry(QtCore.QRect(10, 60, 1000, 111))
        self.frame.setAutoFillBackground(True)
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)
        self.frame.setObjectName("frame")
        self.label_2 = QLabel(self.frame)
        self.label_2.setGeometry(QtCore.QRect(11, 10, 184, 17))
        font = QtGui.QFont()
        font.setItalic(True)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.widget = QWidget(self.frame)
        self.widget.setGeometry(QtCore.QRect(100, 30, 301, 65))
        self.widget.setObjectName("widget")
        self.verticalLayout = QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label_instances = QLabel(self.widget)
        self.label_instances.setObjectName("label_instances")
        self.verticalLayout.addWidget(self.label_instances)
        self.label_classes = QLabel(self.widget)
        self.label_classes.setObjectName("label_classes")
        self.verticalLayout.addWidget(self.label_classes)
    
        ## Frame 2 PARAMETERS
        self.frame_2 = QFrame(self.tab1)
        self.frame_2.setGeometry(QtCore.QRect(1030, 60, 211, 261))
        self.frame_2.setAutoFillBackground(True)
        self.frame_2.setFrameShape(QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
    
        self.toolBox = QToolBox(self.frame_2)
        self.toolBox.setGeometry(QtCore.QRect(10, 40, 191, 151))
        self.toolBox.setObjectName("toolBox")
    
        self.page_resize = QWidget()
        self.page_resize.setGeometry(QtCore.QRect(100, 0, 191, 89))
        self.page_resize.setObjectName("page_resize")
    
        self.layoutWidget = QWidget(self.page_resize)
        self.layoutWidget.setGeometry(QtCore.QRect(0, 0, 188, 52))
        self.layoutWidget.setObjectName("layoutWidget")
    
        self.verticalLayout_2 = QVBoxLayout(self.layoutWidget)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
    
        self.form = QFormLayout ()
    
        self.input_length = QLineEdit()
        self.input_length.setValidator (QtGui.QIntValidator())
        self.input_length.setObjectName("Choose_length")
        self.verticalLayout_2.addWidget(self.input_length)
        self.input_length.setEnabled (False)


        self.input_height = QLineEdit()
        self.input_height.setValidator (QtGui.QIntValidator())
        self.input_height.setObjectName("Choose_height")
        self.verticalLayout_2.addWidget(self.input_height)
        self.input_height.setEnabled (False)
    
        self.form.addRow ("Length :", self.input_length)
    
        self.start = QPushButton(self.frame_2)
        self.start.setObjectName("pushButton_start")
        self.verticalLayout_2.addWidget(self.start)
        self.page_resize.setLayout (self.form)
    
        self.form.addRow ("height :", self.input_height)
        self.form.addRow (self.start)


        self.input_length.setText ("40")
        self.input_height.setText ("40")



        self.toolBox.addItem(self.page_resize, "")
        self.label_3 = QLabel(self.frame_2)
        self.label_3.setGeometry(QtCore.QRect(10, 10, 181, 17))
        font = QtGui.QFont()
        font.setItalic(True)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")


        ## Frame 3 DISPLAY
        self.frame_3 = QFrame(self.tab1)
        self.frame_3.setGeometry(QtCore.QRect(10, 180, 1000, 450))
        self.frame_3.setAutoFillBackground(True)
        self.frame_3.setFrameShape(QFrame.StyledPanel)
        self.frame_3.setFrameShadow(QFrame.Raised)
        self.frame_3.setObjectName("frame_3")
    
        ## Display matrix
        self.tableWidget = QTableWidget(self.frame_3)
        self.tableWidget.setGeometry(QtCore.QRect(0, 0, 1000, 450))
        self.tableWidget.setAutoFillBackground(True)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(0)
        self.tableWidget.setRowCount(0)


        ## Frame 4 VISUALIZATION
        self.frame_4 = QFrame(self.tab1)
        self.frame_4.setGeometry(QtCore.QRect(1030, 330, 211, 191))
        self.frame_4.setFrameShape(QFrame.StyledPanel)
        self.frame_4.setFrameShadow(QFrame.Raised)
        self.frame_4.setObjectName("frame_4")


        ## BUTTON FOR VISUALIZATION
        self.pushButton_previous= QPushButton(self.frame_4)
        self.pushButton_previous.setGeometry(QtCore.QRect(50, 40, 121, 41))
        self.pushButton_previous.setIconSize(QtCore.QSize(30, 30))
        self.pushButton_previous.setAutoDefault(False)
        self.pushButton_previous.setDefault(False)
        self.pushButton_previous.setFlat(False)
        self.pushButton_previous.setObjectName("pushButton_previous")
    
        self.pushButton_next = QPushButton(self.frame_4)
        self.pushButton_next.setGeometry(QtCore.QRect(50, 85, 121, 41))
        self.pushButton_next.setObjectName("pushButton_next")


        self.pushButton_table = QPushButton (self.frame_4)
        self.pushButton_table.setGeometry (QtCore.QRect (50, 130, 121, 41))
        self.pushButton_table.setObjectName ("pushButton_table")


        ## SAVE
        self.frame_5 = QFrame(self.tab1)
        self.frame_5.setGeometry(QtCore.QRect(1080, 550, 121, 41))
        self.frame_5.setFrameShape(QFrame.StyledPanel)
        self.frame_5.setFrameShadow(QFrame.Raised)
        self.frame_5.setObjectName("frame_5")
    
        self.pushButton_save = QPushButton (self.frame_5)
        self.pushButton_save.setGeometry (QtCore.QRect (0, 0, 121, 41))
        self.pushButton_save.setObjectName ("pushButton_save")


        ## RETURN BUTTON
        self.frame_6 = QFrame(self.tab1)
        self.frame_6.setGeometry(QtCore.QRect(1080, 10, 121, 41))
        self.frame_6.setFrameShape(QFrame.StyledPanel)
        self.frame_6.setFrameShadow(QFrame.Raised)
        self.frame_6.setObjectName("frame_6")
    
        self.pushButton_return = QPushButton (self.frame_6)
        self.pushButton_return.setGeometry (QtCore.QRect (0, 0, 121, 41))
        self.pushButton_return.setObjectName ("pushButton_return")



        self.label_4 = QLabel(self.frame_4)
        self.label_4.setGeometry(QtCore.QRect(10, 10, 111, 17))
        font = QtGui.QFont()
        font.setItalic(True)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.layoutWidget2 = QWidget(self.tab1)
        self.layoutWidget2.setGeometry(QtCore.QRect(10, 20, 611, 31))
        self.layoutWidget2.setObjectName("layoutWidget2")
        self.horizontalLayout = QHBoxLayout(self.layoutWidget2)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QLabel(self.layoutWidget2)
        font = QtGui.QFont()
        font.setItalic(True)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.textEdit = QTextEdit(self.layoutWidget2)
        self.textEdit.setObjectName("textEdit")
        self.horizontalLayout.addWidget(self.textEdit)
        self.toolButton = QToolButton(self.layoutWidget2)
        self.toolButton.setObjectName("toolButton")
        self.horizontalLayout.addWidget(self.toolButton)
        self.valider = QPushButton(self.layoutWidget2)
        self.valider.setObjectName("valider")
        self.horizontalLayout.addWidget(self.valider)
        self.tabWidget.addTab(self.tab1, "")
        self.gridLayout.addWidget(self.tabWidget, 0, 1, 1, 1)
        self.setCentralWidget(self.centralwidget)


        self.lbl = QLabel(self.frame_3)
        self.lbl.setGeometry(QtCore.QRect(10, 180, 0, 381))


        ## ACTIVATED OR NOT
        self.tableWidget.setVisible(False)
        self.pushButton_next.setEnabled(False)
        self.pushButton_previous.setEnabled(False)
        self.valider.setEnabled(False)
        self.start.setEnabled(False)
        self.pushButton_table.setEnabled (False)
        self.pushButton_save.setEnabled (False)


        self.toolButton.clicked.connect(self.open_dataset)
        self.start.clicked.connect(self.preprocess)
        self.pushButton_previous.clicked.connect(self.previous_state)
        self.pushButton_next.clicked.connect(self.next_state)
        self.valider.clicked.connect (self.get_dataset_information)
        self.pushButton_table.clicked.connect (self.showTable)
        self.pushButton_save.clicked.connect (self.save)
    
        p = QtGui.QPalette()
        p.setColor(QtGui.QPalette.Window, QtGui.QColor(133,132,130))
        p.setColor(QtGui.QPalette.Button, QtGui.QColor(153,150,150))
        p.setColor(QtGui.QPalette.WindowText, QtGui.QColor(13,13,12))
        p.setColor(self.toolBox.backgroundRole(), QtGui.QColor(189,187,185))
        p.setColor(QtGui.QPalette.ButtonText, QtGui.QColor(13,13,12))
        self.setPalette(p)
    
        self.retranslateUi(self)
        self.tabWidget.setCurrentIndex(0)
        self.toolBox.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(self)
    
    def retranslateUi(self,MainWindow):
        _translate = QtCore.QCoreApplication.translate


        MainWindow.setWindowTitle(_translate("MainWindow", "Graphic Interface"))
        self.label_2.setText(_translate("MainWindow", "Dataset Information:"))
        self.label_instances.setText(_translate("MainWindow", "Number of instances:"))
        self.label_classes.setText(_translate("MainWindow", "Number of classes:"))
        self.label.setText(_translate("MainWindow", "Select a dataset:"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab1), _translate("MainWindow", "Preprocessing"))


        self.toolBox.setItemText(self.toolBox.indexOf(self.page_resize), _translate("MainWindow", "Resizing"))
        self.label_3.setText(_translate("MainWindow", "Preprocessing parameters:"))
        self.start.setText(_translate("MainWindow", "Start"))


        self.pushButton_previous.setText(_translate("MainWindow", "Previous image"))
        self.pushButton_next.setText(_translate("MainWindow", "Next image"))
        self.pushButton_table.setText (_translate ("MainWindow", "Show Matrix"))
        self.pushButton_save.setText (_translate ("MainWindow", "Save"))
        self.pushButton_return.setText (_translate ("MainWindow", "Back"))




        self.label_4.setText(_translate("MainWindow", "Visualization:"))
        self.toolButton.setText(_translate("MainWindow", "..."))
        self.valider.setText(_translate("MainWindow", "Validate"))
Esempio n. 14
0
class Window(QMainWindow):  
    def __init__(self):
        super().__init__()

        self.label_main() # Kutsuu otsikon funktiota
        self.nappula() # Kutsuu nappulan funktiota
        self.setWindowTitle("Cythames") # Pääikkunan titteli
        self.showMaximized() # Avaa ikkunan näytön resoluutiossa
        self.create_menu() # Kutsuu create_menu funktiota
        self.show() # Piirtää objektin näyttöön

    # Menu-palkin def funktiona
    def create_menu(self): 

        mainMenu = self.menuBar() #Luo menu-valikko
        fileMenu = mainMenu.addMenu("File") #Luo ensimmäisen "File" palikan
 
        exitAction = QAction(QIcon('exit.png'), "Exit", self) # Luo exit toiminnan ja sille napin nimi valikossa
        exitAction.setShortcut("Ctrl+X") # Antaa pikatoiminnan exitille
        exitAction.triggered.connect(self.exit_app) # Kun exit nappia painetaan kutsuu exit_app funktiota

        optionsAction = QAction("Options", self) # Luo asetukset-napin
        optionsAction.triggered.connect(self.OptionsWindowOpen) # Kun asetukset-nappia painetaan se kutsuu OptionsWindowOpen funktiota
 
        fileMenu.addAction(exitAction) # Piirtää exit-toiminnon nappia
        fileMenu.addAction(optionsAction) # Piirtää options-toiminnon nappia
    
    # Luo otsikko-tyyppisen def statementin
    def label_main(self): 
        self.hei = "Hei Maailma"
        self.hello = "Hello World"
        self.label = QLabel(self.hello)

        self.frame = QFrame()
        self.frame.setGeometry(500, 0, 500, 500)

        self.setCentralWidget(self.frame)

        self.frameLayout = QVBoxLayout()
        self.frameLayout.addWidget(self.label)
        self.frame.setLayout(self.frameLayout)

        self.mainLayout = QVBoxLayout()
        self.mainLayout.addWidget(self.frame)
        self.setLayout(self.mainLayout)

        self.show()

    # Luodaan nappula
    def nappula (self):
        self.nappi = QPushButton("Nappi", self)
        self.nappi.move(100,100)
        self.nappi.clicked.connect(self.magic)
        self.valinta = False
        self.nappi.show()
    
    # Luodaan algoritmi, joka vaihtaa otsikon nappulan painaessa
    def magic (self):
        if self.valinta == False:
            self.label.setText(self.hei)

        elif self.valinta == True: 
            self.label.setText(self.hello)

        self.valinta = not(self.valinta)
    
    # Funktio, jonka avulla avataan uusi options-ikkunaa
    def OptionsWindowOpen(self): 
        self.layout = QVBoxLayout() # Määritetään self.layout QVBox funktioksi
        self.OptionsWindow_1 = Options(self) # Muuttuja viittaa uuteen options objektiin, eli uuteen options ikkunaan
        self.OptionsWindow_1.show() # Piirtäää viitatun ikkunan

    # Funktio, joka sulkee ohjelmaa
    def exit_app(self): 
        self.close()
class ExtraWindow(QtWidgets.QDialog):
    def __init__(self, parent):
        super().__init__(parent)

        self.setWindowTitle("customer - Table")
        self.setWindowIcon(QtGui.QIcon("assets/img/icons8-edit-file-64.png"))

        self.resize(662, 438)
        self.save_talble_changes = QPushButton("Save table changes", self)
        self.save_talble_changes.setGeometry(390, 290, 251, 31)

        self.add_table_main = QPushButton("Add Column ", self)
        self.add_table_main.setGeometry(390, 260, 251, 28)
        #self.add_table_main.clicked.connect(self.add_column)

        self.delet_table_column = QPushButton("Delet table column", self)
        self.delet_table_column.setGeometry(390, 330, 251, 31)

        self.not_null_box = QCheckBox("Not Null", self)
        self.not_null_box.setGeometry(220, 330, 81, 61)

        self.colm_name_label = QLabel("Column Name:", self)
        self.colm_name_label.setGeometry(10, 250, 111, 41)

        self.table_name_label_2 = QLabel("Table Name", self)
        self.table_name_label_2.setGeometry(10, 10, 91, 21)

        self.comn_name_line_edit = QLineEdit(self)
        self.comn_name_line_edit.setGeometry(110, 260, 151, 22)

        self.data_type_label = QLabel("Data Type", self)
        self.data_type_label.setGeometry(10, 300, 61, 16)

        self.data_type_line_edit = QLineEdit(self)
        self.data_type_line_edit.setGeometry(110, 300, 151, 22)

        self.table_name_line_edit = QLineEdit(self)
        self.table_name_line_edit.setGeometry(110, 10, 391, 22)

        self.foreign_key_box = QCheckBox("Foreign Key", self)
        self.foreign_key_box.setGeometry(120, 330, 91, 61)

        self.primary_key_box = QCheckBox("Primary Key", self)
        self.primary_key_box.setGeometry(20, 330, 111, 61)

        self.table_widget = QTableWidget(self)

        if (self.table_widget.columnCount() < 6):
            self.table_widget.setColumnCount(6)

        __qtablewidgetitem = QTableWidgetItem()
        self.table_widget.setHorizontalHeaderItem(0, __qtablewidgetitem)
        __qtablewidgetitem1 = QTableWidgetItem()
        self.table_widget.setHorizontalHeaderItem(1, __qtablewidgetitem1)
        __qtablewidgetitem2 = QTableWidgetItem()
        self.table_widget.setHorizontalHeaderItem(2, __qtablewidgetitem2)
        __qtablewidgetitem3 = QTableWidgetItem()
        self.table_widget.setHorizontalHeaderItem(3, __qtablewidgetitem3)
        __qtablewidgetitem4 = QTableWidgetItem()
        self.table_widget.setHorizontalHeaderItem(4, __qtablewidgetitem4)
        __qtablewidgetitem5 = QTableWidgetItem()
        self.table_widget.setHorizontalHeaderItem(5, __qtablewidgetitem5)

        self.table_widget.setGeometry(0, 40, 661, 201)
        self.table_widget.setColumnWidth(2, 85)
        self.table_widget.setColumnWidth(3, 85)
        self.table_widget.setColumnWidth(4, 85)

        self.frame = QFrame(self)
        self.frame.setGeometry(0, 390, 661, 51)
        self.frame.setStyleSheet(u"background-color: rgb(45,45,45);")
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)

        self.cancel_button = QPushButton("Cancel button", self.frame)
        self.cancel_button.setGeometry(550, 10, 111, 28)

        self.cancel_button.setStyleSheet(
            u"background-color: rgb(255,255,255);")
        self.add_table_button = QPushButton("Add table", self.frame)

        self.add_table_button.setGeometry(442, 10, 101, 28)
        self.add_table_button.setStyleSheet(
            u"background-color: rgb(255,255,255);")

        self.tables()

        self.show()

    def tables(self):
        '''
        self.setWindowTitle(QCoreApplication.translate("ExtraWindow", u"Dialog", None))
        self.save_talble_changes.setText(QCoreApplication.translate("ExtraWindow", u"Save Table Changes", None))
        self.add_table_main.setText(QCoreApplication.translate("ExtraWindow", u"Add Table", None))
        self.delet_table_column.setText(QCoreApplication.translate("ExtraWindow", u"Delete Table Column", None))
        self.not_null_box.setText(QCoreApplication.translate("ExtraWindow", u"Not null", None))
        self.colm_name_label.setText(QCoreApplication.translate("ExtraWindow", u"Colomn Name", None))
        self.table_name_label_2.setText(QCoreApplication.translate("ExtraWindow", u"Table Name", None))
        self.data_type_label.setText(QCoreApplication.translate("ExtraWindow", u"Data Type", None))
        self.foreign_key_box.setText(QCoreApplication.translate("ExtraWindow", u"Foreign key", None))
        self.primary_key_box.setText(QCoreApplication.translate("ExtraWindow", u"Primary key", None))
        '''
        ___qtablewidgetitem = self.table_widget.horizontalHeaderItem(0)
        ___qtablewidgetitem.setText(
            QCoreApplication.translate("ExtraWindow", u"Column Name", None))
        ___qtablewidgetitem1 = self.table_widget.horizontalHeaderItem(1)
        ___qtablewidgetitem1.setText(
            QCoreApplication.translate("ExtraWindow", u"Data Type", None))
        ___qtablewidgetitem2 = self.table_widget.horizontalHeaderItem(2)
        ___qtablewidgetitem2.setText(
            QCoreApplication.translate("ExtraWindow", u"Primary key", None))
        ___qtablewidgetitem3 = self.table_widget.horizontalHeaderItem(3)
        ___qtablewidgetitem3.setText(
            QCoreApplication.translate("ExtraWindow", u"Foreign key", None))
        ___qtablewidgetitem4 = self.table_widget.horizontalHeaderItem(4)
        ___qtablewidgetitem4.setText(
            QCoreApplication.translate("ExtraWindow", u"Not Null", None))
        ___qtablewidgetitem5 = self.table_widget.horizontalHeaderItem(5)
        ___qtablewidgetitem5.setText(
            QCoreApplication.translate("ExtraWindow", u"Default", None))
        '''