def create_predict_pieseries(self, bots_part): human_part = 1 - bots_part percentage_bots_part = int(round(bots_part * 100)) percentage_human_part = 100 - percentage_bots_part # define the series slices of the pie series = QPieSeries() bot_slice = QPieSlice(f"Bot ({percentage_bots_part}%)", bots_part) human_slice = QPieSlice(f"Human ({percentage_human_part}%)", human_part) font = QFont() font.setBold(True) bot_slice.setColor(QColor("#3498db")) bot_slice.setLabelFont(font) human_slice.setColor(QColor("#a8e6cf")) human_slice.setLabelFont(font) series.append(bot_slice) series.append(human_slice) series.setLabelsVisible(False) series.setLabelsPosition(QPieSlice.LabelInsideHorizontal) series.setPieSize(0.94) return series
def create_initialize_pieseries(self): color = QColor("#757a79") # define the series slices of the pie series = QPieSeries() none_slice = QPieSlice("Undefined", 1.0) none_slice.setColor(color) none_slice.setBorderColor(color) series.append(none_slice) series.setLabelsVisible(False) series.setLabelsPosition(QPieSlice.LabelOutside) series.setPieSize(0.94) return series
def updateValues(self): try: counter_movies = movie_session.query(Movie).count() genres = movie_session.query(Genre).all() self.genre_series.clear() for genre in genres: genre_movies = movie_session.query(Movie).filter_by(genre_id=genre.id).count() self.genre_series.append(genre.name, genre_movies/counter_movies) for i in range(len(self.genre_series)): slice = QPieSlice() slice = self.genre_series.slices()[i] slice.setLabelVisible(True) film_directors = movie_session.query(Film_director).all() self.filmDirector_series.clear() for film_director in film_directors: filmDirector_movie = movie_session.query(Movie).filter_by(film_director_id=film_director.id).count() self.filmDirector_series.append(film_director.name + " " + film_director.surname, filmDirector_movie/counter_movies) for i in range(len(self.filmDirector_series)): slice = QPieSlice() slice = self.filmDirector_series.slices()[i] slice.setLabelVisible(True) self.status_series.clear() all_status = movie_session.query(MovieStatus).all() counter_status = {} for status in all_status: movie_status = movie_session.query(Movie).filter_by(status_id = status.id).count() self.status_series.append(status.name, movie_status/counter_movies) for i in range(len(self.status_series)): slice = QPieSlice() slice = self.status_series.slices()[i] slice.setLabelVisible(True) if slice.label() == 'Not watched': slice.setColor(QColor(255, 0, 0)) elif slice.label() == 'Watched': slice.setColor(QColor(0, 100, 0)) except ZeroDivisionError: home_window = self.parent().findChild(QWidget, 'home_window') self.parent().setCurrentWidget(home_window) openDialog(QMessageBox.Critical, 'Insufficient data for chart', 'Error')
def updateValues(self): try: counter_books = book_session.query(Book).count() genres = book_session.query(Genre).all() self.genre_series.clear() for genre in genres: genre_books = book_session.query(Book).filter_by( genre_id=genre.id).count() self.genre_series.append(genre.name, genre_books / counter_books) for i in range(len(self.genre_series)): slice = QPieSlice() slice = self.genre_series.slices()[i] slice.setLabelVisible(True) authors = book_session.query(Author).all() self.author_series.clear() for author in authors: author_books = book_session.query(Book).filter_by( author_id=author.id).count() self.author_series.append(author.name + " " + author.surname, author_books / counter_books) for i in range(len(self.author_series)): slice = QPieSlice() slice = self.author_series.slices()[i] slice.setLabelVisible(True) self.status_series.clear() all_status = book_session.query(BookStatus).all() counter_status = {} for status in all_status: book_status = book_session.query(Book).filter_by( status_id=status.id).count() self.status_series.append(status.name, book_status / counter_books) for i in range(len(self.status_series)): slice = QPieSlice() slice = self.status_series.slices()[i] slice.setLabelVisible(True) if slice.label() == 'Not readed': slice.setColor(QColor(255, 0, 0)) elif slice.label() == 'In progress': slice.setColor(QColor(0, 0, 255)) elif slice.label() == 'Readed': slice.setColor(QColor(0, 100, 0)) except ZeroDivisionError: home_window = self.parent().findChild(QWidget, 'home_window') self.parent().setCurrentWidget(home_window) openDialog(QMessageBox.Critical, 'Insufficient data for chart', 'Error')