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 __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 __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()
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)
"-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)
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_())
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)
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")
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_()
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(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")