Beispiel #1
0
    def __init__(self, parent=None):
        super(QMainWindow, self).__init__(parent)
        self.isLogging = False
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.parameters = ParamTree()
        self.ui.graphicsView.setParameters(self.parameters.tree, showTop=False)
        self.parameters.tree.sigTreeStateChanged.connect(self.change_params)

        self.config = Config(self.parameters.activeParams)
        self.resultPlots = {}

        self.plot = gui_scatter.ScatterPlot(self.config.dataset.data)
        self.plot.w.die.connect(self.untick_show_plot)

        self.graphs = gui_graphs.GraphsWrapper(self.config)
        self.graphs.w.reinit_graphs(self.config, self.parameters)
        self.graphs.w.graphsdying.connect(self.untick_show_graphs)

        self.axestable = AxesTable(self, self.ui.table_axes)

        self.stats_tab = stats.Stats(self.ui)

        self.ui.button_start.clicked.connect(self.start)
        self.ui.checkBox_plotShowing.stateChanged.connect(self.plot.show)
        self.ui.checkbox_graphs.stateChanged.connect(self.graphs.show_graphs)
        self.ui.checkBox_logging.stateChanged.connect(self.is_logging)
        self.ui.show_grid_checkbox.stateChanged.connect(self.plot.showGrid)
        self.ui.sample_size_slider.valueChanged.connect(
            self.plot.setSampleSize)
Beispiel #2
0
    def __init__(self, parent=None):
        super(QMainWindow, self).__init__(parent)
        self.isLogging = False
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.parameters = ParamTree()
        self.ui.graphicsView.setParameters(self.parameters.tree, showTop=False)
        self.parameters.tree.sigTreeStateChanged.connect(self.change_params)

        self.config = Config(self.parameters.activeParams)
        self.resultPlots = {}

        self.plot = gui_scatter.ScatterPlot(self.config.dataset.data)
        self.plot.w.die.connect(self.untick_show_plot)

        self.graphs = gui_graphs.GraphsWrapper(self.config)
        self.graphs.w.reinit_graphs(self.config, self.parameters)
        self.graphs.w.graphsdying.connect(self.untick_show_graphs)

        self.axestable = AxesTable(self, self.ui.table_axes)

        self.stats_tab = stats.Stats(self.ui)

        self.ui.button_start.clicked.connect(self.start)
        self.ui.checkBox_plotShowing.stateChanged.connect(self.plot.show)
        self.ui.checkbox_graphs.stateChanged.connect(self.graphs.show_graphs)
        self.ui.checkBox_logging.stateChanged.connect(self.is_logging)
        self.ui.show_grid_checkbox.stateChanged.connect(self.plot.showGrid)
        self.ui.sample_size_slider.valueChanged.connect(self.plot.setSampleSize)
Beispiel #3
0
    def __init__(self, parent=None):
        """Initialization of the main window.
        """

        QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Setting signal connections
        self.ui.searchBtn.clicked.connect(self.search)
        self.ui.searchBar.returnPressed.connect(self.search)
        self.ui.songList.itemActivated.connect(self.download_item)

        # Manage login status
        self.ui.statusLbl.setText("Not logged in")
        self.loggedIn = False

        self.login_dialog()
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        app_root = os.path.dirname(os.path.abspath(sys.argv[0]))
        path = os.path.join(app_root, 'ui', 'images', 'icon.png')
        self.setWindowIcon(QtGui.QIcon(path))
        self.setWindowTitle('FindAgoda-gui')
        self.ui.statusbar.showMessage('Ready.')

        self.setConnections()
        self.setCompleter(self.ui.hotelLineEdit)
        self.initTable()

        self.rowcount = 0
        self.ui.tableWidget.setRowCount(0)
        self.ui.searchButton.setEnabled(False)

        self.show()
Beispiel #5
0
    def __init__(self, parent=None):
        """Initialization of the main window.
        """

        QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Setting signal connections
        self.ui.searchBtn.clicked.connect(self.search)
        self.ui.searchBar.returnPressed.connect(self.search)
        self.ui.songList.itemActivated.connect(self.download_item)

        # Manage login status
        self.ui.statusLbl.setText("Not logged in")
        self.loggedIn = False

        self.login_dialog()
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.progressBar = QtWidgets.QProgressBar()
        self.progressBar.setRange(0, 100)
        self.statusBar().addPermanentWidget(self.progressBar)
        self.statusBar().setSizeGripEnabled(False)
        self.statusBar().setStyleSheet("QStatusBar::item {border: none;}")

        self.setWindowTitle("YahooStock")
        self.move(100, 100)
        self.show()

        self.load()

        self.setMenuAction()
        self.setConnections()

        self.ui.statusbar.showMessage('Press start to update', 5000)
        self.ui.pushButtonStart.setEnabled(True)
        self.ui.pushButtonStop.setEnabled(False)
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.progressBar = QtWidgets.QProgressBar()
        self.progressBar.setRange(0, 100)
        self.statusBar().addPermanentWidget(self.progressBar)
        self.statusBar().setSizeGripEnabled(False)
        self.statusBar().setStyleSheet("QStatusBar::item {border: none;}")

        self.setWindowTitle("YahooStock")
        self.move(100, 100)
        self.show()

        self.load()

        self.setMenuAction()
        self.setConnections()

        self.ui.statusbar.showMessage('Press start to update', 5000)
        self.ui.pushButtonStart.setEnabled(True)
        self.ui.pushButtonStop.setEnabled(False)

    def setMenuAction(self):
        self.ui.actionLoad.triggered.connect(self.load)
        self.ui.actionSave.triggered.connect(self.save)
        self.ui.actionExit.triggered.connect(self.close)
        self.ui.actionLicense.triggered.connect(self.showLicense)
        self.ui.actionAbout.triggered.connect(self.showAbout)

    def showLicense(self):
        licenseDialog = QDialog(self)
        uiDialog = Ui_Dialog()
        uiDialog.setupUi(licenseDialog)
        uiDialog.ExitButton.clicked.connect(licenseDialog.close)
        licenseDialog.show()

    def showAbout(self):
        QtWidgets.QMessageBox.information(self, 'About', 'YahooStock ' + VERSION + '\n'
                                          'Author: ShengYu')

    def setConnections(self):
        self.ui.pushButtonStart.clicked.connect(self.start)
        self.ui.pushButtonStop.clicked.connect(self.stop)
        self.ui.pushButtonExit.clicked.connect(self.close)
        self.ui.pushButtonAdd.clicked.connect(self.add)

    def load(self):
        print('load')
        self.ui.statusbar.showMessage('Load', 2000)

        self.yahoo = YahooTWStock()
        self.yahoo.loadFromStockCsv('stock.csv')
        # stockIdList = ['2330', '2317', '2002', '1301', '2412', '2891', '0050', '0051', '0056', '00646']
        # self.yahoo.addStockIdList(stockIdList)

        self.work = Worker(self.yahoo)
        self.work.signalDataChanged.connect(self.updateStock)
        self.work.notifyProgress.connect(self.onProgress)

        self.initDataAndTable()
        self.ui.statusbar.showMessage('Load done.', 2000)

    def save(self):
        print('save')
        self.ui.statusbar.showMessage('Save', 2000)

        self.yahoo.saveToStockCsv('stock.csv')
        self.ui.statusbar.showMessage('Save done.', 2000)

    def start(self):
        self.ui.pushButtonStart.setEnabled(False)
        self.ui.pushButtonStop.setEnabled(True)
        print('start')
        self.ui.statusbar.showMessage('Start', 2000)
        self.work.start()

    def stop(self):
        self.ui.pushButtonStart.setEnabled(True)
        self.ui.pushButtonStop.setEnabled(False)
        print('stop')
        self.ui.statusbar.showMessage('Stop', 2000)
        self.work.stop()

    def add(self):
        print('add')
        self.ui.statusbar.showMessage('Add', 2000)
        self.appendDataAndTable()

    def initDataAndTable(self):
        # initTable
        self.table = self.ui.tableWidget

        self.table.setColumnCount(3)
        self.table.setHorizontalHeaderLabels(['股票代號', '股票名稱', '股價'])

        self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)

        self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)  # 列寬設置
        #self.table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)  # 列寬設置
        self.table.horizontalHeader().setStretchLastSection(True) # 充滿列寬
        #self.table.verticalHeader().setSectionResizeMode(QHeaderView.Stretch) # 行高設置
        #self.table.verticalHeader().setStretchLastSection(True) # 充滿行高

        self.table.setSelectionBehavior(QTableWidget.SelectRows) # 行選擇模式
        self.table.setSelectionMode(QAbstractItemView.SingleSelection); # 無法拖拽選擇

        # initData
        self.data = {'股票代號' : [], '股票名稱' : [], '股價' : []}
        for i in range(self.yahoo.size):
            self.data['股票代號'].append(str(self.yahoo.id(i)))
            self.data['股票名稱'].append(str('none'))
            self.data['股價'].append(str('0'))

        # insertTable
        self.table.setRowCount(0)
        for i in range(self.yahoo.size):
            self.table.insertRow(i)
            self.table.setItem(i, 0, QTableWidgetItem(str(self.data['股票代號'][i])))
            self.table.setItem(i, 1, QTableWidgetItem(str(self.data['股票名稱'][i])))
            self.table.setItem(i, 2, QTableWidgetItem(str(self.data['股價'][i])))

    def appendDataAndTable(self):
        stock_id = self.ui.lineEdit.text()
        name = 'none'
        price = 0

        # appendData
        self.data['股票代號'].append(str(stock_id))
        self.data['股票名稱'].append(str(name))
        self.data['股價'].append(str(price))

        # appendTable
        i = self.table.rowCount()
        self.table.insertRow(i)
        self.table.setItem(i, 0, QTableWidgetItem(str(self.data['股票代號'][i])))
        self.table.setItem(i, 1, QTableWidgetItem(str(self.data['股票名稱'][i])))
        self.table.setItem(i, 2, QTableWidgetItem(str(self.data['股價'][i])))

        # update stock to self.yahoo list
        self.yahoo.append(YahooTWStock(stock_id))

    def updateTable(self, i):
        print('updateTable')
        self.table.setItem(i, 0, QTableWidgetItem(str(self.data['股票代號'][i])))
        self.table.setItem(i, 1, QTableWidgetItem(str(self.data['股票名稱'][i])))
        self.table.setItem(i, 2, QTableWidgetItem(str(self.data['股價'][i])))

    def updateData(self, i, id, name, price):
        print('updateData')
        self.data['股票代號'][i] = id
        self.data['股票名稱'][i] = name
        self.data['股價'][i] = price

    def updateStock(self, i, id, name, price):
        print('updateStock %d %s %s %f' % (i, id, name, price))
        self.ui.statusbar.showMessage('Update %d/%d...' % (i+1, self.yahoo.size), 2000)
        self.updateData(i, id, name, price)
        self.updateTable(i)

    def onProgress(self, value):
        self.progressBar.setValue(value)
Beispiel #8
0
        "-t",
        "--target",
        help="Automatically launch a staged nmap against the target IP range")
    parser.add_argument(
        "-f",
        "--file",
        help="Import nmap XML file and kick off automated attacks")
    args = parser.parse_args()

    app = QtWidgets.QApplication(sys.argv)
    myFilter = MyEventFilter()  # to capture events
    app.installEventFilter(myFilter)
    app.setWindowIcon(QtGui.QIcon('./images/icons/logo.png'))

    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)

    try:
        qss_file = open('./ui/sparta.qss').read()
    except IOError as e:
        print(
            "[-] The sparta.qss file is missing. Your installation seems to be corrupted. Try downloading the latest version."
        )
        exit(0)

    MainWindow.setStyleSheet(qss_file)
    logic = Logic()  # Model prep (logic, db and models)
    view = View(ui, MainWindow)  # View prep (gui)
    controller = Controller(
        view, logic)  # Controller prep (communication between model and view)
Beispiel #9
0
from ui.gui import Ui_MainWindow
from ui.ui import CLI_UI
from PyQt5 import QtWidgets
from domain.board import TestBoard
from domain.plane import TestPlane
from controller.planes_board import TestPlanesBoard
from controller.game import TestGame

TestBoard()
TestPlane()
TestPlanesBoard()
TestGame()
ui = 'gui'

if ui == 'cli':
    pass
    s = CLI_UI().menu()
elif ui == 'gui':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    PlaneWar = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(PlaneWar)
    PlaneWar.show()
    sys.exit(app.exec_())
Beispiel #10
0
class MyForm(QMainWindow):
    """Functions as a scope for the UI.
    """
    def __init__(self, parent=None):
        """Initialization of the main window.
        """

        QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Setting signal connections
        self.ui.searchBtn.clicked.connect(self.search)
        self.ui.searchBar.returnPressed.connect(self.search)
        self.ui.songList.itemActivated.connect(self.download_item)

        # Manage login status
        self.ui.statusLbl.setText("Not logged in")
        self.loggedIn = False

        self.login_dialog()

    def search(self):
        """Perform a search.
        """

        if self.loggedIn:
            self.ui.songList.clear()
            query = self.ui.searchBar.text()  # Get search query
            search = self.vk.search(unicode(query))  # Perform search

            # Add search result to the QListWidget
            if search:
                for idx, x in enumerate(search):
                    s = " - "
                    listString = unicode(idx + 1) + s + x['artist'] + s + x[
                        'title'] + s + x['duration']
                    dataString = x['artist'] + s + x['title'] + ".mp3"
                    item = QListWidgetItem(listString)

                    # Add download data to the list
                    data = [x['url'], dataString]
                    item.setData(Qt.UserRole, data)

                    # Add QWidgetListItems
                    self.ui.songList.addItem(item)
            else:
                pass

    def login_dialog(self):
        """Spawn the login modal.
        """

        self.dialog = QDialog()
        self.dialog.ui = Ui_Dialog()
        self.dialog.ui.setupUi(self.dialog)
        self.dialog.setAttribute(Qt.WA_DeleteOnClose)
        self.dialog.ui.login.clicked.connect(self.take_login)
        self.dialog.ui.password.setEchoMode(QLineEdit.Password)
        self.dialog.exec_()

    def take_login(self):
        """Performs a login on VK.com.
        """

        username = self.dialog.ui.username.text()
        password = self.dialog.ui.password.text()

        self.dialog.accept()  # Accept the form

        # Call the login function
        self.vk = Vkontakte(unicode(username), unicode(password))
        login = self.vk.login()

        if login:
            self.ui.statusLbl.setText("Logged in")
            self.loggedIn = True
        else:
            self.ui.statusLbl.setText("Wrong user/password")
            self.login_dialog()

    def download_item(self, item):
        """Download an mp3 from the list
        """

        url = item.data(Qt.UserRole).toPyObject()[0]
        name = item.data(Qt.UserRole).toPyObject()[1]

        # Initialize background download thread.
        self.workThread = WorkThread(url, name)
        self.connect(self.workThread, SIGNAL("download_status(QString)"),
                     self.download_status)
        self.workThread.start()

    def download_status(self, status):
        """Handles signals from the download threads, and update the status.
        """
        self.ui.downloadList.addItem(status)
        self.ui.downloadList.scrollToBottom()
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        app_root = os.path.dirname(os.path.abspath(sys.argv[0]))
        path = os.path.join(app_root, 'ui', 'images', 'icon.png')
        self.setWindowIcon(QtGui.QIcon(path))
        self.setWindowTitle('FindAgoda-gui')
        self.ui.statusbar.showMessage('Ready.')

        self.setMenuAction()
        self.setConnections()
        self.setCompleter(self.ui.lineEditHotel)
        self.initTable()

        self.rowcount = 0
        self.ui.tableWidget.setRowCount(0)
        self.ui.buttonSearch.setEnabled(False)

        self.move(100, 100)
        self.show()

    def setMenuAction(self):
        self.ui.actionExit.triggered.connect(self.close)
        self.ui.actionLicense.triggered.connect(self.showLicense)
        self.ui.actionAbout.triggered.connect(self.showAbout)

    def showLicense(self):
        QtWidgets.QMessageBox.information(self, 'License', '')

    def showAbout(self):
        QtWidgets.QMessageBox.information(self, 'About', '')

    def setConnections(self):
        self.ui.buttonAdd.clicked.connect(self.buttonAddEvent)
        self.ui.buttonDelete.clicked.connect(self.buttonDeleteEvent)
        self.ui.buttonClear.clicked.connect(self.buttonClearEvent)
        self.ui.buttonSearch.clicked.connect(self.buttonSearchEvent)
        self.ui.buttonExit.clicked.connect(self.close)

    def setCompleter(self, lineEdit):
        self.getHotelData()
        model = QStringListModel()
        model.setStringList(self.hotelStringList)
        completer = QCompleter()
        completer.setModel(model)
        completer.setFilterMode(QtCore.Qt.MatchContains)
        lineEdit.setCompleter(completer)

    def getHotelData(self):
        # TODO load string list from file
        self.hotelStringList = ['東橫INN博多口站前 (Toyoko Inn Hakata-guchi Ekimae)', \
                                '東橫INN博多口站前2 (Toyoko Inn Hakata-guchi Ekimae No.2)', \
                                '東橫INN博多站南 (Toyoko Inn Hakata-eki Minami)', \
                                '東橫INN博多站前祇園 (Toyoko Inn Hakata Ekimae Gion)', \
                                '東橫INN福岡天神 (Toyoko Inn Fukuoka Tenjin)', \
                                '東橫INN博多西中州 (Toyoko Inn Hakata Nishi-nakasu)', \
                                '博多超級酒店 (Super Hotel Hakata)', \
                                '博多城市Sutton飯店 (Sutton Hotel Hakata City)', \
                                'AreaOne飯店 - 博多 (Hotel Areaone Hakata)', \
                                'APA飯店 - 名古屋錦EXCELLENT (APA Hotel Nagoya-Nishiki Excellent)', \
                                'Dormy Inn高階飯店 - 名古屋榮天然溫泉錦鯱之湯 (Dormy Inn Premium Nagoya Sakae Natural Hot Spring)', \
                                ]
        self.hotelUrlStringList = ['toyoko-inn-hakata-guchi-ekimae', \
                                   'toyoko-inn-hakata-guchi-ekimae-no-2', \
                                   'toyoko-inn-hakata-eki-minami', \
                                   'toyoko-inn-hakata-ekimae-gion', \
                                   'toyoko-inn-fukuoka-tenjin', \
                                   'toyoko-inn-hakata-nishi-nakasu', \
                                   'super-hotel-hakata', \
                                   'sutton-hotel-hakata-city', \
                                   'hotel-areaone-hakata', \
                                   'apa-hotel-nagoya-nishiki-excellent', \
                                   'dormy-inn-premium-nagoya-sakae-natural-hot-spring', \
                                   ]
        self.hotelCityStringList = ['fukuoka-jp', \
                                    'fukuoka-jp', \
                                    'fukuoka-jp', \
                                    'fukuoka-jp', \
                                    'fukuoka-jp', \
                                    'fukuoka-jp', \
                                    'fukuoka-jp', \
                                    'fukuoka-jp', \
                                    'fukuoka-jp', \
                                    'nagoya-jp', \
                                   'nagoya-jp', \
                                   ]

    def searchHotelUrl(self, hotelString):
        for i in range(len(self.hotelStringList)):
            if (self.hotelStringList[i] == hotelString):
                return self.hotelUrlStringList[i]
        return ""

    def searchHotelCity(self, hotelString):
        for i in range(len(self.hotelStringList)):
            if (self.hotelStringList[i] == hotelString):
                return self.hotelCityStringList[i]
        return ""

    def initTable(self):
        self.ui.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Interactive)
        #self.ui.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
        #self.ui.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
        #self.ui.tableWidget.horizontalHeader().setStretchLastSection(True)
        self.ui.tableWidget.setColumnWidth(0, 110)
        self.ui.tableWidget.setColumnWidth(1, 90)
        self.ui.tableWidget.setColumnWidth(2, 90)
        self.ui.tableWidget.setColumnWidth(3, 50)
        self.ui.tableWidget.setColumnWidth(4, 80)
        self.ui.tableWidget.setColumnWidth(5, 60)
        self.ui.tableWidget.setColumnWidth(6, 60)
        self.ui.tableWidget.setColumnWidth(7, 50)

    def insertTable(self, i, hotel, checkIn, checkOut, days, city, rooms, adults, childs):
        self.ui.tableWidget.insertRow(i)
        self.ui.tableWidget.setItem(i, 0, QTableWidgetItem(hotel))
        self.ui.tableWidget.setItem(i, 1, QTableWidgetItem(checkIn))
        self.ui.tableWidget.setItem(i, 2, QTableWidgetItem(checkOut))
        self.ui.tableWidget.setItem(i, 3, QTableWidgetItem(days))
        self.ui.tableWidget.setItem(i, 4, QTableWidgetItem(city))
        self.ui.tableWidget.setItem(i, 5, QTableWidgetItem(rooms))
        self.ui.tableWidget.setItem(i, 6, QTableWidgetItem(adults))
        self.ui.tableWidget.setItem(i, 7, QTableWidgetItem(childs))

    def buttonAddEvent(self):
        print('buttonAddEvent')
        if (self.ui.lineEditHotel.text() == ''):
            QtWidgets.QMessageBox.critical(self, 'Error', 'hotel is empty.')
            return
        self.ui.statusbar.showMessage('Add')
        hotel_name = self.ui.lineEditHotel.text()
        start_date = self.ui.lineEditCheckIn.text()
        end_date = self.ui.lineEditCheckOut.text()
        city = self.searchHotelCity(self.ui.lineEditHotel.text())
        rooms = self.ui.comboBoxRooms.currentText()
        adults = self.ui.comboBoxAdults.currentText()
        childs = self.ui.comboBoxChilds.currentText()

        self.insertTable(self.rowcount, hotel_name, \
                         start_date, end_date, \
                         subDate(start_date, end_date), city, \
                         rooms, adults, childs)
        self.ui.tableWidget.selectRow(self.rowcount)
        #self.ui.tableWidget.verticalScrollBar().setSliderPosition(self.ui.tableWidget.verticalScrollBar().maximum())
        self.rowcount += 1
        self.ui.buttonSearch.setEnabled(True)

    def buttonDeleteEvent(self):
        print('buttonDeleteEvent')
        if (self.rowcount > 0):
            self.ui.statusbar.showMessage('Delete item ' + str(self.ui.tableWidget.currentRow()+1))
            self.ui.tableWidget.removeRow(self.ui.tableWidget.currentRow())
            self.rowcount -= 1

        if (self.rowcount == 0):
            self.ui.buttonSearch.setEnabled(False)

    def buttonClearEvent(self):
        print('buttonClearEvent')
        self.ui.statusbar.showMessage('Clear')
        self.ui.tableWidget.setRowCount(0)
        self.rowcount = 0
        self.ui.buttonSearch.setEnabled(False)

    def buttonSearchEvent(self):
        print('buttonSearchEvent')
        self.ui.statusbar.showMessage('Search')
        for i in range(self.ui.tableWidget.rowCount()):
            hotel_name = self.searchHotelUrl(self.ui.tableWidget.item(i, 0).text())
            start_date = self.ui.tableWidget.item(i, 1).text()
            end_date = self.ui.tableWidget.item(i, 2).text()
            los = self.ui.tableWidget.item(i, 3).text()
            city = self.ui.tableWidget.item(i, 4).text()
            rooms = self.ui.tableWidget.item(i, 5).text()
            adults = self.ui.tableWidget.item(i, 6).text()
            childs = self.ui.tableWidget.item(i, 7).text()
            hotel_url = 'https://www.agoda.com/zh-tw/' + hotel_name + '/hotel/' + city + '.html'
            searchAgoda(hotel_url, start_date, end_date, rooms, adults, childs, los)
            print('Hotel URL: ' + hotel_url)
Beispiel #12
0
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(QMainWindow, self).__init__(parent)
        self.isLogging = False
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.parameters = ParamTree()
        self.ui.graphicsView.setParameters(self.parameters.tree, showTop=False)
        self.parameters.tree.sigTreeStateChanged.connect(self.change_params)

        self.config = Config(self.parameters.activeParams)
        self.resultPlots = {}

        self.plot = gui_scatter.ScatterPlot(self.config.dataset.data)
        self.plot.w.die.connect(self.untick_show_plot)

        self.graphs = gui_graphs.GraphsWrapper(self.config)
        self.graphs.w.reinit_graphs(self.config, self.parameters)
        self.graphs.w.graphsdying.connect(self.untick_show_graphs)

        self.axestable = AxesTable(self, self.ui.table_axes)

        self.stats_tab = stats.Stats(self.ui)

        self.ui.button_start.clicked.connect(self.start)
        self.ui.checkBox_plotShowing.stateChanged.connect(self.plot.show)
        self.ui.checkbox_graphs.stateChanged.connect(self.graphs.show_graphs)
        self.ui.checkBox_logging.stateChanged.connect(self.is_logging)
        self.ui.show_grid_checkbox.stateChanged.connect(self.plot.showGrid)
        self.ui.sample_size_slider.valueChanged.connect(
            self.plot.setSampleSize)

    def is_logging(self, state):
        self.isLogging = state

    def change_params(self, param, changes):
        for param, change, data in changes:
            if param.name() in self.parameters.activeParams:
                self.parameters.activeParams[param.name()] = data
        self.config = Config(self.parameters.activeParams)
        self.plot.reinitPlot(self.config.dataset.data)
        if param.opts['name'] == 'Dataset':
            for key, value in self.config.dataset.params.iteritems():
                children = self.parameters.tree.child(
                    'Dataset stats').children()
                for c in children:
                    if c.name() == key:
                        c.setValue(value)
                if key == 'Clusters':
                    self.parameters.addClusters(value)
                if key == 'Feature weights':
                    self.parameters.addFeatureSignificance(value)
        elif param.opts['name'] == 'Number of generations':
            self.graphs.w.fitness_plot.redraw_optimal(param.opts['value'])
            self.ui.evolutions_label.setText(
                '0 of ' +
                str(self.parameters.activeParams['Number of generations']))

        self.graphs.w.reinit_graphs(self.config, self.parameters)
        self.plot.setData(self.config.dataset.data)
        if 'ClusterMap' in self.config.dataset.params:
            self.plot.w.groupItems(self.config.dataset.params['ClusterMap'])
            self.graphs.w.histogram.add_optimal(self.config.dataset.params)

    def start(self):
        self.thread = QtCore.QThread(self)

        if hasattr(self, 'worker') and self.worker.running:
            self.worker.running = False
            self.ui.button_start.setText("Start")
            return

        self.graphs.w.reinit_graphs(self.config, self.parameters)
        self.ui.button_start.setText("Stop")
        self.graphs.w.histogram.add_current()
        self.worker = Worker()
        self.worker.isLogging = self.isLogging
        self.worker.core = Core(self.config)
        self.worker.update_gencount.connect(self.plot.w.setGenerationCount)
        self.worker.update_gencount.connect(self.update_progress_bar)
        self.worker.update_data.connect(self.plot.w.groupItems)
        self.worker.update_centroids.connect(self.plot.w.update_centroids)
        self.worker.update_data.connect(self.graphs.w.histogram.update)
        self.worker.update_fitness.connect(
            self.graphs.w.fitness_plot.add_fitness)
        #self.worker.log.connect(self.write_log)
        self.worker.moveToThread(self.thread)
        self.worker.finished.connect(self.thread.quit)
        self.worker.finished.connect(self.finished_job)
        self.thread.started.connect(self.worker.work)
        self.worker.running = True
        self.thread.start()

    def closeEvent(self, QCloseEvent):
        self.plot.w.close()
        self.graphs.w.close()
        del self.graphs
        for k, v in self.resultPlots.iteritems():
            v.w.close()
        for k, v in self.stats_tab.plots.iteritems():
            v.close()
        del self.stats_tab
        del self.resultPlots
        QCloseEvent.accept()

    def untick_show_plot(self):
        self.ui.checkBox_plotShowing.setCheckState(Qt.Unchecked)

    def untick_show_graphs(self):
        self.ui.checkbox_graphs.setCheckState(Qt.Unchecked)

    def update_progress_bar(self, progress):
        generations = self.parameters.activeParams['Number of generations']
        scaled = (progress / generations) * 100
        self.ui.progressBar.setValue(scaled)
        self.ui.evolutions_label.setText(
            str(progress) + ' of ' + str(generations))

    #def write_log(self, text):
    #    if self.isLogging:
    #        root = Tkinter.Tk()
    #        root.withdraw()
    #        f = asksaveasfile(parent=root, mode='w', filetypes=[('CSV', '*.csv')], defaultextension=".csv")
    #        f.write(text)
    #        f.close()

    def set_visible_results_plot(self, row, view, state):
        if state:
            data = self.config.dataset.data
            self.resultPlots[row] = gui_scatter.ScatterPlot(
                data, title="Optimal clusters for " + str(view), labels=False)
            self.resultPlots[row].setData(data, row, view)
            if 'ClusterMap' in self.config.dataset.params:
                self.resultPlots[row].w.groupItems(
                    self.config.dataset.params['ClusterMap'])
            self.resultPlots[row].w.die.connect(
                partial(self.axestable.untick_result, row))
        elif not state and row in self.resultPlots:
            self.resultPlots[row].w.close()
            del self.resultPlots[row]

    def finished_job(self):
        self.worker.running = False
        self.ui.button_start.setText("Start")
Beispiel #13
0
import sys
import time
import concurrent.futures

from PyQt5 import QtWidgets

# Frontend
from ui.gui import Ui_MainWindow

# Backend
from navs.labcorp import LabcorpSearch
from navs.quest import QuestSearch

start = time.perf_counter()

app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
ui.init_logic()
MainWindow.show()

app.exec_()
Beispiel #14
0
class MyForm(QMainWindow):
    """Functions as a scope for the UI.
    """

    def __init__(self, parent=None):
        """Initialization of the main window.
        """

        QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # Setting signal connections
        self.ui.searchBtn.clicked.connect(self.search)
        self.ui.searchBar.returnPressed.connect(self.search)
        self.ui.songList.itemActivated.connect(self.download_item)

        # Manage login status
        self.ui.statusLbl.setText("Not logged in")
        self.loggedIn = False

        self.login_dialog()

    def search(self):
        """Perform a search.
        """

        if self.loggedIn:
            self.ui.songList.clear()
            query = self.ui.searchBar.text()             # Get search query
            search = self.vk.search(unicode(query))     # Perform search

            # Add search result to the QListWidget
            if search:
                for idx, x in enumerate(search):
                    s = " - "
                    listString = unicode(idx+1) + s + x['artist'] + s + x['title'] + s + x['duration']
                    dataString = x['artist'] + s + x['title'] + ".mp3"
                    item = QListWidgetItem(listString)

                    # Add download data to the list
                    data = [x['url'], dataString]
                    item.setData(Qt.UserRole, data)

                    # Add QWidgetListItems
                    self.ui.songList.addItem(item)
            else:
                pass

    def login_dialog(self):
        """Spawn the login modal.
        """

        self.dialog = QDialog()
        self.dialog.ui = Ui_Dialog()
        self.dialog.ui.setupUi(self.dialog)
        self.dialog.setAttribute(Qt.WA_DeleteOnClose)
        self.dialog.ui.login.clicked.connect(self.take_login)
        self.dialog.ui.password.setEchoMode(QLineEdit.Password)
        self.dialog.exec_()

    def take_login(self):
        """Performs a login on VK.com.
        """

        username = self.dialog.ui.username.text()
        password = self.dialog.ui.password.text()

        self.dialog.accept()    # Accept the form

        # Call the login function
        self.vk = Vkontakte(unicode(username), unicode(password))
        login = self.vk.login()

        if login:
            self.ui.statusLbl.setText("Logged in")
            self.loggedIn = True
        else:
            self.ui.statusLbl.setText("Wrong user/password")
            self.login_dialog()

    def download_item(self, item):
        """Download an mp3 from the list
        """

        url = item.data(Qt.UserRole).toPyObject()[0]
        name = item.data(Qt.UserRole).toPyObject()[1]

        # Initialize background download thread.
        self.workThread = WorkThread(url, name)
        self.connect(self.workThread, SIGNAL("download_status(QString)"), self.download_status)
        self.workThread.start()

    def download_status(self, status):
        """Handles signals from the download threads, and update the status.
        """
        self.ui.downloadList.addItem(status)
        self.ui.downloadList.scrollToBottom()
Beispiel #15
0
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(QMainWindow, self).__init__(parent)
        self.isLogging = False
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.parameters = ParamTree()
        self.ui.graphicsView.setParameters(self.parameters.tree, showTop=False)
        self.parameters.tree.sigTreeStateChanged.connect(self.change_params)

        self.config = Config(self.parameters.activeParams)
        self.resultPlots = {}

        self.plot = gui_scatter.ScatterPlot(self.config.dataset.data)
        self.plot.w.die.connect(self.untick_show_plot)

        self.graphs = gui_graphs.GraphsWrapper(self.config)
        self.graphs.w.reinit_graphs(self.config, self.parameters)
        self.graphs.w.graphsdying.connect(self.untick_show_graphs)

        self.axestable = AxesTable(self, self.ui.table_axes)

        self.stats_tab = stats.Stats(self.ui)

        self.ui.button_start.clicked.connect(self.start)
        self.ui.checkBox_plotShowing.stateChanged.connect(self.plot.show)
        self.ui.checkbox_graphs.stateChanged.connect(self.graphs.show_graphs)
        self.ui.checkBox_logging.stateChanged.connect(self.is_logging)
        self.ui.show_grid_checkbox.stateChanged.connect(self.plot.showGrid)
        self.ui.sample_size_slider.valueChanged.connect(self.plot.setSampleSize)

    def is_logging(self, state):
        self.isLogging = state

    def change_params(self, param, changes):
        for param, change, data in changes:
            if param.name() in self.parameters.activeParams:
                self.parameters.activeParams[param.name()] = data
        self.config = Config(self.parameters.activeParams)
        self.plot.reinitPlot(self.config.dataset.data)
        if param.opts['name'] == 'Dataset':
            for key, value in self.config.dataset.params.iteritems():
                children = self.parameters.tree.child('Dataset stats').children()
                for c in children:
                    if c.name() == key:
                        c.setValue(value)
                if key == 'Clusters':
                    self.parameters.addClusters(value)
                if key == 'Feature weights':
                    self.parameters.addFeatureSignificance(value)
        elif param.opts['name'] == 'Number of generations':
            self.graphs.w.fitness_plot.redraw_optimal(param.opts['value'])
            self.ui.evolutions_label.setText('0 of ' + str(self.parameters.activeParams['Number of generations']))

        self.graphs.w.reinit_graphs(self.config, self.parameters)
        self.plot.setData(self.config.dataset.data)
        if 'ClusterMap' in self.config.dataset.params:
            self.plot.w.groupItems(self.config.dataset.params['ClusterMap'])
            self.graphs.w.histogram.add_optimal(self.config.dataset.params)

    def start(self):
        self.thread = QtCore.QThread(self)

        if hasattr(self, 'worker') and self.worker.running:
            self.worker.running = False
            self.ui.button_start.setText("Start")
            return

        self.graphs.w.reinit_graphs(self.config, self.parameters)
        self.ui.button_start.setText("Stop")
        self.graphs.w.histogram.add_current()
        self.worker = Worker()
        self.worker.isLogging = self.isLogging
        self.worker.core = Core(self.config)
        self.worker.update_gencount.connect(self.plot.w.setGenerationCount)
        self.worker.update_gencount.connect(self.update_progress_bar)
        self.worker.update_data.connect(self.plot.w.groupItems)
        self.worker.update_centroids.connect(self.plot.w.update_centroids)
        self.worker.update_data.connect(self.graphs.w.histogram.update)
        self.worker.update_fitness.connect(self.graphs.w.fitness_plot.add_fitness)
        #self.worker.log.connect(self.write_log)
        self.worker.moveToThread(self.thread)
        self.worker.finished.connect(self.thread.quit)
        self.worker.finished.connect(self.finished_job)
        self.thread.started.connect(self.worker.work)
        self.worker.running = True
        self.thread.start()
    
    def closeEvent(self, QCloseEvent):
        self.plot.w.close()
        self.graphs.w.close()
        del self.graphs
        for k, v in self.resultPlots.iteritems():
            v.w.close()
        for k,v in self.stats_tab.plots.iteritems():
            v.close()
        del self.stats_tab
        del self.resultPlots
        QCloseEvent.accept()
    
    def untick_show_plot(self):
        self.ui.checkBox_plotShowing.setCheckState(Qt.Unchecked)

    def untick_show_graphs(self):
        self.ui.checkbox_graphs.setCheckState(Qt.Unchecked)

    def update_progress_bar(self, progress):
        generations = self.parameters.activeParams['Number of generations']
        scaled = (progress / generations) * 100
        self.ui.progressBar.setValue(scaled)
        self.ui.evolutions_label.setText(str(progress) + ' of ' + str(generations))

    #def write_log(self, text):
    #    if self.isLogging:
    #        root = Tkinter.Tk()
    #        root.withdraw()
    #        f = asksaveasfile(parent=root, mode='w', filetypes=[('CSV', '*.csv')], defaultextension=".csv")
    #        f.write(text)
    #        f.close()

    def set_visible_results_plot(self, row, view, state):
        if state:
            data = self.config.dataset.data
            self.resultPlots[row] = gui_scatter.ScatterPlot(data, title="Optimal clusters for " + str(view), labels=False)
            self.resultPlots[row].setData(data, row, view)
            if 'ClusterMap' in self.config.dataset.params:
                self.resultPlots[row].w.groupItems(self.config.dataset.params['ClusterMap'])
            self.resultPlots[row].w.die.connect(partial(self.axestable.untick_result, row))
        elif not state and row in self.resultPlots:
            self.resultPlots[row].w.close()
            del self.resultPlots[row]

    def finished_job(self):
        self.worker.running = False
        self.ui.button_start.setText("Start")