def __init__(self): super(MainWindow, self).__init__() self.selectedDate = QDate.currentDate() self.fontSize = 15 centralWidget = QWidget() centralWidget.setStyleSheet("background-color:white;") dateLabel = QLabel("Date:") monthCombo = QComboBox() for month in range(1, 13): monthCombo.addItem(QDate.longMonthName(month)) yearEdit = QDateTimeEdit() yearEdit.setDisplayFormat('yyyy') yearEdit.setDateRange(QDate(1753, 1, 1), QDate(8000, 1, 1)) monthCombo.setCurrentIndex(self.selectedDate.month() - 1) yearEdit.setDate(self.selectedDate) self.fontSizeLabel = QLabel("Font size:") self.fontSizeSpinBox = QSpinBox() self.fontSizeSpinBox.setRange(1, 64) self.fontSizeSpinBox.setValue(10) self.editor = QTextBrowser() self.insertCalendar() self.l1 = QLabel() self.l1.setText(QDate.longMonthName(self.selectedDate.month())) self.l1.setAlignment(Qt.AlignCenter) self.l1.setStyleSheet( "border: 2px solid #F44336;color:white;" "border-radius: 10px;font-size:19px;margin-left:100px;margin-right:100px; background-color:#F44336;" ) monthCombo.activated.connect(self.setMonth) yearEdit.dateChanged.connect(self.setYear) self.fontSizeSpinBox.valueChanged.connect(self.setfontSize) controlsLayout = QHBoxLayout() # controlsLayout.setStyleSheet("background-color:red;") # controlsLayout.addWidget(dateLabel) controlsLayout.addWidget(monthCombo) controlsLayout.addWidget(yearEdit) controlsLayout.addSpacing(20) # controlsLayout.addWidget(self.fontSizeLabel) # controlsLayout.addWidget(self.fontSizeSpinBox) controlsLayout.addStretch(1) centralLayout = QVBoxLayout() centralLayout.addWidget(self.l1) centralLayout.addWidget(self.editor, 1) centralLayout.addLayout(controlsLayout) centralWidget.setLayout(centralLayout) self.setCentralWidget(centralWidget) self.editor.setStyleSheet("background-color:white;padding:10px;")
class Demo(QWidget): def __init__(self): super(Demo, self).__init__() self.datetime_1 = QDateTimeEdit(self) # 1 self.datetime_1.dateChanged.connect(lambda: print('Date Changed!')) self.datetime_2 = QDateTimeEdit(QDateTime.currentDateTime(), self) # 2 self.datetime_2.setDisplayFormat('yyyy-MM-dd HH:mm:ss') self.datetime_2.timeChanged.connect(lambda: print('Time Changed!')) print(self.datetime_2.date()) print(self.datetime_2.time()) print(self.datetime_2.dateTime()) self.datetime_3 = QDateTimeEdit(QDateTime.currentDateTime(), self) # 3 self.datetime_3.dateTimeChanged.connect(lambda: print('DateTimeChanged!')) self.datetime_3.setCalendarPopup(True) self.datetime_4 = QDateTimeEdit(QDate.currentDate(), self) # 4 self.datetime_5 = QDateTimeEdit(QTime.currentTime(), self) self.date = QDateEdit(QDate.currentDate(), self) # 5 self.date.setDisplayFormat('yyyy/MM/dd') print(self.date.date()) self.time = QTimeEdit(QTime.currentTime(), self) # 6 self.time.setDisplayFormat('HH:mm:ss') print(self.time.time()) self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.datetime_1) self.v_layout.addWidget(self.datetime_2) self.v_layout.addWidget(self.datetime_3) self.v_layout.addWidget(self.datetime_4) self.v_layout.addWidget(self.datetime_5) self.v_layout.addWidget(self.date) self.v_layout.addWidget(self.time) self.setLayout(self.v_layout)
def createEditor(self, parent, option, index): """ Crée le widget utilisé pour éditer la valeur d'une cellule Retourne un widget "vierge", i.e. ce n'est pas ici qu'on initialise la valeur du widget. En revanche, c'est ici qu'on peut définir les valeurs min/max acceptées, etc. https://doc.qt.io/qt-5/model-view-programming.html#providing-an-editor """ editor = QDateTimeEdit(parent=parent) editor.setMinimumDate( datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30)) editor.setMaximumDate( datetime.datetime(year=2030, month=9, day=1, hour=18, minute=30)) editor.setDisplayFormat("yyyy-MM-dd HH:mm") #editor.setCalendarPopup(True) # setFrame(): tell whether the line edit draws itself with a frame. # If enabled (the default) the line edit draws itself inside a frame, otherwise the line edit draws itself without any frame. editor.setFrame(False) action = QAction(editor) # <- action.setShortcut(Qt.CTRL | Qt.Key_Delete) # <- #action.setShortcut(Qt.Key_Delete) # the keyevent for the suppr key is already catched by the editor thus it doesn't work... action.triggered.connect( lambda: self.deleteActionCallback(editor, index)) # <- editor.addAction(action) # <- return editor
def createEditor(self, parent, option, index): date_edit = QDateTimeEdit(parent) date_edit.setDisplayFormat("yyyy/MM/dd HH:mm") date_edit.setDateTime(QDateTime.currentDateTime()) date_edit.setCalendarPopup(True) return date_edit
def initUI(self): lbl = QLabel('QTimeEdit') datetimeedit = QDateTimeEdit(self) datetimeedit.setDateTime(QDateTime.currentDateTime()) datetimeedit.setDateTimeRange(QDateTime(1900, 1, 1, 00, 00, 00), QDateTime(2100, 1, 1, 00, 00, 00)) # QDateTimeEdit 클래스를 이용해서 날짜, 시간 편집 위젯(datetimeedit)을 # 하나 만들어줍니다. # # setDateTime 메서드에 QDateTime.currentDateTime()을 # 입력해서 프로그램이 실행될 때 현재 날짜와 시간으로 표시되도록 합니다. # # setDateTimeRange를 이용하면 사용자가 선택할 수 있는 시간의 범위를 제한할 수 있습니다. datetimeedit.setDisplayFormat('yyyy.MM.dd hh:mm:ss') # setDisplayFormat 메서드를 이용해서 시간이 'yyyy.MM.dd hh:mm:ss'의 # 형식으로 표시되도록 설정했습니다. vbox = QVBoxLayout() vbox.addWidget(lbl) vbox.addWidget(datetimeedit) vbox.addStretch() # 수직 박스 레이아웃을 이용해서 라벨과 날짜, # 시간 편집 위젯을 수직으로 배치하고, 전체 위젯의 레이아웃으로 설정합니다. self.setLayout(vbox) self.setWindowTitle('QDateTimeEdit') self.setGeometry(300, 300, 300, 200) self.show()
class TimeEdit(WidgetWithTZinfo): def __init__(self, parent=None): super(TimeEdit, self).__init__(parent) self.initQTimeEdit() self.initTZinfoEdit() def initQTimeEdit(self): self.timeEdit = QDateTimeEdit(self) self.timeEdit.setKeyboardTracking(False) self.timeEdit.setDisplayFormat("hh:mm:ss.zzz") self.layout().addWidget(self.timeEdit) def time(self) -> datetime.time: time = self.timeEdit.time().toPyTime() tzinfo = self.tzinfoEdit.getObj2add() time = time.replace(tzinfo=tzinfo) return time def setTime(self, val: datetime.time): if isinstance(val, datetime.time): self.timeEdit.setTime(val) self.tzinfoEdit.setVal(val.tzinfo) else: raise TypeError("arg1 must be instance of type datetime.time", type(val))
class MainWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vlayout = QVBoxLayout() grid = QGridLayout() label1 = QLabel('文件路径') self.lineEdit = QLineEdit() label2 = QLabel('时间点') self.dateEdit = QDateTimeEdit() self.dateEdit.setDisplayFormat('yyyy-MM-dd hh:mm:ss') grid.addWidget(label1, 0, 0) grid.addWidget( self.lineEdit, 0, 1, ) grid.addWidget(label2, 1, 0) grid.addWidget(self.dateEdit, 1, 1) vlayout.addLayout(grid) vlayout.addStretch(1) self.setLayout(vlayout) def onClipboradChanged(self): clipboard = QApplication.clipboard() text = clipboard.text() if text: content = str(text) print('onClipboradChanged---' + content + ' len = ' + str(len(content))) if content.startswith('file:///'): path = content.replace('file:///', '') if not os.path.exists(path): return name = Utils.fileName(path) self.lineEdit.setText(path) if Utils.isAllowConvert2Time(name): self.updateDateTimeEdit(filename=name) pass elif len(content) < 50: self.updateDateTimeEdit(content=content) def updateDateTimeEdit(self, filename='', content=''): if filename: times = Utils.extractTimeFromFile(filename) elif content: times = Utils.extractTime(content) if times == -1: return timestr = Utils.convertSeconds2TimeStr(times) print(timestr) self.dateEdit.setDateTime( QDateTime.fromString(timestr, 'yyyy-MM-dd hh:mm:ss')) pass
class DateTimeEditDemo(QWidget): """主窗口""" def __init__(self, parent=None): super().__init__(parent=parent) self.setWindowTitle("QDateTimeEdit 使用") self.resize(320, 100) date_time = QDateTime.currentDateTime() self.datetime_edit = QDateTimeEdit(date_time) # 初始化时设置初始值为当前日期时间 # self.datetime_edit.setDateTime(date_time) self.datetime_edit.setDisplayFormat("yyyy-MM-dd HH:mm:ss") # 设置显示格式 self.datetime_edit.setDateTimeRange(date_time.addYears(-1), date_time.addYears(1)) # 设置时间范围 self.datetime_edit.setCalendarPopup(True) # 允许使用Calendar self.datetime_edit.dateTimeChanged.connect( self.datetime_change) # 会向槽函数传递QDateTime self.datetime_edit.dateChanged.connect( self.date_change) # 会向槽函数传递QDate self.datetime_edit.timeChanged.connect( self.time_change) # 会向槽函数传递QTime self.button = QPushButton() self.button.setText("获得日期和时间") self.button.clicked.connect(self.btn_click) self.status_bar = QStatusBar() vbox = QVBoxLayout(self) vbox.addWidget(self.datetime_edit) vbox.addWidget(self.button) vbox.addWidget(self.status_bar) def datetime_change(self, date_time): self.status_bar.showMessage(date_time.__str__()) def date_change(self, date): self.status_bar.showMessage(date.__str__()) def time_change(self, time): self.status_bar.showMessage(time.__str__()) def btn_click(self, event): date_time = self.datetime_edit.dateTime() max_date_time = self.datetime_edit.maximumDateTime() max_date = self.datetime_edit.maximumDate() max_time = self.datetime_edit.maximumTime() min_date_time = self.datetime_edit.minimumDateTime() min_date = self.datetime_edit.minimumDate() min_time = self.datetime_edit.minimumTime() format_str = f"max_date_time: {max_date_time}\nmax_date: {max_date}\nmax_time: {max_time}\n\ min_date_time: {min_date_time}\nmin_time: {min_time}\nmin_time: {min_time}\n{event}" _ = QMessageBox.information(self, "显示QDateTime中的一些数据", format_str)
def createEditor(self, parent, option, index): editor = QDateTimeEdit(parent=parent) editor.setMinimumDate(datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30)) editor.setMaximumDate(datetime.datetime(year=2020, month=9, day=1, hour=18, minute=30)) editor.setDisplayFormat("yyyy-MM-dd HH:mm:ss") #editor.setCalendarPopup(True) # setFrame(): tell whether the line edit draws itself with a frame. # If enabled (the default) the line edit draws itself inside a frame, otherwise the line edit draws itself without any frame. editor.setFrame(False) return editor
def initUI(self): self.setWindowTitle('不同风格的日期格式') layout = QVBoxLayout() datetime1 = QDateTimeEdit(QDateTime.currentDateTime()) datetime2 = QDateTimeEdit(QDateTime.currentDateTime()) date = QDateTimeEdit(QDate.currentDate()) time = QDateTimeEdit(QTime.currentTime()) # 设置最大最小日期时间、下拉日期 datetime1.setMaximumDate(QDate.currentDate().addDays(365)) datetime1.setMinimumDate(QDate.currentDate().addDays(-365)) datetime1.setCalendarPopup(True) datetime1.setDisplayFormat('yyyy-MM-dd HH:mm:ss') datetime2.setDisplayFormat('yyyy/MM/dd HH-mm-ss') date.setDisplayFormat('yyyy-MM-dd') time.setDisplayFormat('HH:mm:ss') # 为信号设置槽 self.datetime1 = datetime1 datetime1.dateTimeChanged.connect(self.ChangeDateTime) datetime2.dateChanged.connect(self.ChangeDate) self.btn = QPushButton('点击获取时间') self.btn.clicked.connect(self.Onclick_Button) layout.addWidget(datetime1) layout.addWidget(datetime2) layout.addWidget(date) layout.addWidget(time) layout.addWidget(self.btn) self.setLayout(layout)
def add_input(self, k, v): lbl = QLabel(self) lbl.setText(k) self.vbox.addWidget(lbl) if isinstance(v, datetime.date): qle = QDateTimeEdit(self) qle.setDate(v) qle.setDisplayFormat("yyyy.MM.dd") qle.setCalendarPopup(True) else: qle = QLineEdit(self) qle.setText(str(v)) self.vbox.addWidget(qle) return qle
class MainWin(QWidget): def __init__(self, parent=None): super(MainWin, self).__init__(parent) layout = QVBoxLayout(self) self.dateEdit = QDateTimeEdit(QDateTime.currentDateTime(), self) self.dateEdit.setDisplayFormat('yyyy-MM-dd HH:mm:ss') self.dateEdit.setMinimumDate(QDate.currentDate().addDays(-365)) self.dateEdit.setMaximumDate(QDate.currentDate().addDays(365)) self.dateEdit.setCalendarPopup(True) self.dateEdit.dateChanged.connect(self.onDateChanged) self.dateEdit.dateTimeChanged.connect(self.onDateTimeChanged) self.dateEdit.timeChanged.connect(self.onTimeChanged) self.btn = QPushButton('取得日期和時間') self.btn.clicked.connect(self.onButtonClick) layout.addWidget(self.dateEdit) layout.addWidget(self.btn) self.resize(300, 90) self.setWindowTitle('DateTimeEdit2') def onDateChanged(self, date): print(date) def onDateTimeChanged(self, dateTime): print(dateTime) def onTimeChanged(self, time): print(time) def onButtonClick(self): dateTime = self.dateEdit.dateTime() maxDate = self.dateEdit.maximumDate() maxDateTime = self.dateEdit.maximumDateTime() maxTime = self.dateEdit.maximumTime() minDate = self.dateEdit.minimumDate() minDateTime = self.dateEdit.minimumDateTime() minTime = self.dateEdit.minimumTime() print('\n選擇的日期時間') print('dateTime = %s') print('maxDate = %s' % str(maxDate)) print('maxDateTime = %s' % str(maxDateTime)) print('maxTime = %s' % str(maxTime)) print('minDate = %s' % str(minDate)) print('minDateTime = %s' % str(minDateTime)) print('minTime = %s' % str(minTime))
def initUI(self): label = QLabel('QTimeEdit') label.setAlignment(Qt.AlignCenter) time = QTimeEdit(self) time.setTime(QTime.currentTime()) time.setTimeRange(QTime(00, 00, 00), QTime.currentTime()) time.setDisplayFormat('a:hh:mm:ss.zzz') label2 = QLabel('QDateEdit') label2.setAlignment(Qt.AlignCenter) self.date_edit = QDateEdit(self) self.date_edit.setDate(QDate.currentDate()) self.date_edit.setDateRange(QDate(2000, 1, 1), QDate.currentDate()) # self.date_edit.setDisplayFormat('yyyy년 MMMM d일') self.date_edit.dateChanged.connect(self.dateChange) self.label3 = QLabel('이곳에 QDateEdit에서 선택된 값이 나타납니다.') self.label3.setAlignment(Qt.AlignCenter) label4 = QLabel('QDateTimeEdit') label4.setAlignment(Qt.AlignCenter) label5 = QLabel(self) label5.setAlignment(Qt.AlignCenter) label5.setText( f'QDateTime \n 현재 시간은 {QDateTime.currentDateTime().toString("yyyy년 MMMM d일 ap hh시 mm분 ss초.zzz")} 입니다.' ) dt_edit = QDateTimeEdit(self) dt_edit.setDateTimeRange(QDateTime(2020, 1, 1, 00, 00, 00),\ QDateTime(2021, 1, 1, 00, 00, 00)) dt_edit.setDisplayFormat('yyyy.MM.dd hh:mm:ss') vbox = QVBoxLayout() vbox.addWidget(label) vbox.addWidget(time) vbox.addWidget(label2) vbox.addWidget(self.date_edit) vbox.addWidget(self.label3) vbox.addWidget(label4) vbox.addWidget(label5) vbox.addWidget(dt_edit) self.setLayout(vbox) self.setWindowTitle('QTime, QDateEdit, QDateTimeEdit') self.setGeometry(300, 300, 400, 300) self.show()
def __init__(self, model, display: str): super(DateTimePickerSeries, self).__init__() self.model = model date_time = QDateTimeEdit(self.model.content) date_time.setDisplayFormat(display) date_time.dateTimeChanged.connect(self.set_model_date_time) self.model.contentChanged.connect(date_time.setDateTime) layout = QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(date_time) self.setLayout(layout)
def __init__(self, parent=None): super(MainWin, self).__init__(parent) dt_ed = QDateTimeEdit(self) dt_ed2 = QDateTimeEdit(QDateTime.currentDateTime(), self) d_ed = QDateTimeEdit(QDate.currentDate(), self) t_ed = QDateTimeEdit(QTime.currentTime(), self) dt_ed.setDisplayFormat('yyyy-MM-dd HH:mm:ss') dt_ed2.setDisplayFormat('yyyy/MM/dd HH-mm-ss') d_ed.setDisplayFormat('yyyy.MM.dd') t_ed.setDisplayFormat('HH:mm:ss') dt_ed.setMinimumDate(QDate.currentDate().addDays(-365)) dt_ed.setMaximumDate(QDate.currentDate().addDays(365)) dt_ed.setCalendarPopup(True) layout = QVBoxLayout(self) layout.addWidget(dt_ed) layout.addWidget(dt_ed2) layout.addWidget(d_ed) layout.addWidget(t_ed) self.setGeometry(100, 100, 250, 150) self.setWindowTitle('DateTimeEdit')
def createEditor(self, parent, option, index): editor = QDateTimeEdit(parent=parent) editor.setMinimumDate( datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30)) editor.setMaximumDate( datetime.datetime(year=2020, month=9, day=1, hour=18, minute=30)) editor.setDisplayFormat("yyyy-MM-dd HH:mm:ss") #editor.setCalendarPopup(True) # setFrame(): tell whether the line edit draws itself with a frame. # If enabled (the default) the line edit draws itself inside a frame, otherwise the line edit draws itself without any frame. editor.setFrame(False) return editor
def __init__(self): super(MainWindow, self).__init__() self.selectedDate = QDate.currentDate() self.fontSize = 10 centralWidget = QWidget() dateLabel = QLabel("Date:") monthCombo = QComboBox() for month in range(1, 13): monthCombo.addItem(QDate.longMonthName(month)) yearEdit = QDateTimeEdit() yearEdit.setDisplayFormat('yyyy') yearEdit.setDateRange(QDate(1753, 1, 1), QDate(8000, 1, 1)) monthCombo.setCurrentIndex(self.selectedDate.month() - 1) yearEdit.setDate(self.selectedDate) self.fontSizeLabel = QLabel("Font size:") self.fontSizeSpinBox = QSpinBox() self.fontSizeSpinBox.setRange(1, 64) self.fontSizeSpinBox.setValue(10) self.editor = QTextBrowser() self.insertCalendar() monthCombo.activated.connect(self.setMonth) yearEdit.dateChanged.connect(self.setYear) self.fontSizeSpinBox.valueChanged.connect(self.setfontSize) controlsLayout = QHBoxLayout() controlsLayout.addWidget(dateLabel) controlsLayout.addWidget(monthCombo) controlsLayout.addWidget(yearEdit) controlsLayout.addSpacing(24) controlsLayout.addWidget(self.fontSizeLabel) controlsLayout.addWidget(self.fontSizeSpinBox) controlsLayout.addStretch(1) centralLayout = QVBoxLayout() centralLayout.addLayout(controlsLayout) centralLayout.addWidget(self.editor, 1) centralWidget.setLayout(centralLayout) self.setCentralWidget(centralWidget)
def __init__(self): super(MainWindow, self).__init__() self.selectedDate = QDate.currentDate() self.fontSize = 10 centralWidget = QWidget() dateLabel = QLabel("Date:") monthCombo = QComboBox() for month in range(1, 13): monthCombo.addItem(QDate.longMonthName(month)) yearEdit = QDateTimeEdit() yearEdit.setDisplayFormat("yyyy") yearEdit.setDateRange(QDate(1753, 1, 1), QDate(8000, 1, 1)) monthCombo.setCurrentIndex(self.selectedDate.month() - 1) yearEdit.setDate(self.selectedDate) self.fontSizeLabel = QLabel("Font size:") self.fontSizeSpinBox = QSpinBox() self.fontSizeSpinBox.setRange(1, 64) self.fontSizeSpinBox.setValue(10) self.editor = QTextBrowser() self.insertCalendar() monthCombo.activated.connect(self.setMonth) yearEdit.dateChanged.connect(self.setYear) self.fontSizeSpinBox.valueChanged.connect(self.setfontSize) controlsLayout = QHBoxLayout() controlsLayout.addWidget(dateLabel) controlsLayout.addWidget(monthCombo) controlsLayout.addWidget(yearEdit) controlsLayout.addSpacing(24) controlsLayout.addWidget(self.fontSizeLabel) controlsLayout.addWidget(self.fontSizeSpinBox) controlsLayout.addStretch(1) centralLayout = QVBoxLayout() centralLayout.addLayout(controlsLayout) centralLayout.addWidget(self.editor, 1) centralWidget.setLayout(centralLayout) self.setCentralWidget(centralWidget)
def createEditor(self, parent, option, index): if index.column() in DATE_TIME_COLUMN_LIST: editor = QDateTimeEdit(parent=parent) #editor.setMinimumDate(datetime.datetime(year=2018, month=1, day=1, hour=0, minute=0)) #editor.setMaximumDate(datetime.datetime(year=2020, month=9, day=1, hour=18, minute=30)) editor.setDisplayFormat(QT_DATE_TIME_FORMAT) #editor.setCalendarPopup(True) # setFrame(): tell whether the line edit draws itself with a frame. # If enabled (the default) the line edit draws itself inside a frame, otherwise the line edit draws itself without any frame. editor.setFrame(False) return editor else: return QStyledItemDelegate.createEditor(self, parent, option, index)
def group_datetime_spinbox(self): group2 = QGroupBox('QDateTimeEdit') lbl = QLabel('QDateTimeEdit') date_time_edit = QDateTimeEdit(self) date_time_edit.setDateTime(QDateTime.currentDateTime()) date_time_edit.setDateTimeRange(QDateTime(1900, 1, 1, 00, 00, 00), QDateTime(2100, 1, 1, 00, 00, 00)) date_time_edit.setDisplayFormat('yyyy-MM-dd hh:mm:ss') date_time_edit.dateTimeChanged.connect(self.datetime_value_change) self.lbl5 = QLabel( date_time_edit.dateTime().toString('yyyy-MM-dd hh:mm:ss')) layout_group5 = QHBoxLayout() layout_group5.addWidget(lbl) layout_group5.addWidget(date_time_edit) layout_group5.addWidget(self.lbl5) return layout_group5
def initUI(self): lb = QLabel('QTimeEdit :') dte = QDateTimeEdit(self) dte.setDateTime(QDateTime.currentDateTime()) dte.setDateTimeRange( QDateTime(1900, 1, 1, 00, 00, 00), QDateTime(2100, 1, 1, 00, 00, 00), ) dte.setDisplayFormat('yyyy.MM.dd hh:mm:ss') vbox = QVBoxLayout() vbox.addWidget(lb) vbox.addWidget(dte) vbox.addStretch() self.setLayout(vbox)
class Scheduler(QDialog): def __init__(self, photo, caption, ig): super(Scheduler, self).__init__() self.photo = photo self.caption = caption self.ig = ig self.init_ui() self.exec_() def init_ui(self): self.setWindowTitle("Schedule Post") self.date_edit = QDateTimeEdit(QDateTime.currentDateTime()) self.date_edit.setDisplayFormat("dd.MM.yyyy hh:mm") self.date_edit.setMinimumDateTime(QDateTime.currentDateTime()) self.calendar = QCalendarWidget(self) self.calendar.setGridVisible(True) self.calendar.setMinimumDate(QDate.currentDate()) self.calendar.setSelectedDate(QDate.currentDate()) self.calendar.clicked.connect(self.set_date_time) self.confirm_button = QPushButton("Confirm") self.confirm_button.clicked.connect(self.set_schedule) vbox = QVBoxLayout(self) vbox.addWidget(self.date_edit) vbox.addWidget(self.calendar) vbox.addWidget(self.confirm_button) def set_date_time(self, qDate): self.date_edit.setDate(qDate) def set_schedule(self): self.date_time = self.date_edit.dateTime() schedule = self.date_time.toPyDateTime() now = datetime.now() delta_t = schedule - now secs = delta_t.seconds + 1 t = Timer(secs, self.ig.upload, [self.photo, self.caption]) t.start() self.accept()
def importEvents(self, data): self.setRowCount(0) TimeStampsIndex = 0 for key in data: self.rowNumb = self.rowCount() self.setRowCount(self.rowNumb + len(data[key])) timeStamp = QDateTimeEdit() timeStamp.setDisplayFormat("dd.MM.yyyy") timeStamp.setReadOnly(True) timeStampCell = QDateTime.currentDateTime() timeStampCell = QDateTime.fromString(key, "dd.MM.yyyy") timeStamp.setDateTime(timeStampCell) self.setCellWidget(TimeStampsIndex, 0, timeStamp) if len(data[key]) > 1: self.setSpan(TimeStampsIndex, 0, len(data[key]) , 1) for row in range(len(data[key])): cell_0 = QTableWidgetItem('') cell_0.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) cell_0.setFlags( Qt.ItemIsSelectable | Qt.ItemIsEnabled ) cell_1 = QTableWidgetItem('') cell_1.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter) cell_1.setFlags( Qt.ItemIsSelectable | Qt.ItemIsEnabled ) self.setItem(TimeStampsIndex + row, 1, cell_0) self.setItem(TimeStampsIndex + row, 2, cell_1) self.item(TimeStampsIndex + row, 1).setText(self._IncomeSourceCategory[data[key][row][0]['cell_0']]) try: if len(data[key][row][1]) == 2: self.item(TimeStampsIndex + row, 2).setText("%.2f" % round(float(data[key][row][1]['cell_1.1']), 2) + self._CurrencyIndex[data[key][row][1]['cell_1.2']]) elif len(data[key][row][1]) == 4: self.item(TimeStampsIndex + row, 2).setText("%.2f" % round(float(data[key][row][1]['cell_1.1']), 2) + self._CurrencyIndex[data[key][row][1]['cell_1.2']] + " -- კონვერტირდა --> " + "%.2f" % round(float(data[key][row][1]['cell_1.3']), 2) + self._CurrencyIndex[data[key][row][1]['cell_1.4']]) except ValueError: pass TimeStampsIndex = TimeStampsIndex + len(data[key]) self.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents) self.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch) self.horizontalHeader().setSectionResizeMode(2, QHeaderView.Stretch) self.scrollToBottom()
def initUI(self): lbl = QLabel('QTimeEdit') datetimeedit = QDateTimeEdit(self) datetimeedit.setDateTime(QDateTime.currentDateTime()) datetimeedit.setDateTimeRange(QDateTime(1900, 1, 1, 00, 00, 00), QDateTime(2100, 1, 1, 00, 00, 00)) datetimeedit.setDisplayFormat('yyyy.MM.dd hh:mm:ss') vbox = QVBoxLayout() vbox.addWidget(lbl) vbox.addWidget(datetimeedit) vbox.addStretch() self.setLayout(vbox) self.setWindowTitle('QDateTimeEdit') self.setGeometry(300, 300, 300, 200) self.show()
def createEditor(self, parent, styleOption, index): if index.column() == 1: editor = QDateTimeEdit(parent) editor.setDisplayFormat(self.parent().currentDateFormat) editor.setCalendarPopup(True) return editor editor = QLineEdit(parent) # create a completer with the strings in the column as model allStrings = [] for i in range(1, index.model().rowCount()): strItem = index.model().data(index.sibling(i, index.column()), Qt.EditRole) if strItem not in allStrings: allStrings.append(strItem) autoComplete = QCompleter(allStrings) editor.setCompleter(autoComplete) editor.editingFinished.connect(self.commitAndCloseEditor) return editor
class DateDialog(QDialog): def __init__(self, parent=None): super(DateDialog, self).__init__(parent) layout = QVBoxLayout(self) # info text self.label = QLabel( text='The file appears to contain relative dates.\n' 'Please specify a reference date.') layout.addWidget(self.label) # nice widget for editing the date self.datetime = QDateTimeEdit(self) self.datetime.setCalendarPopup(True) self.datetime.setDisplayFormat('yyyy-MM-dd hh:mm:ss') self.datetime.setDateTime(QDateTime.currentDateTime()) layout.addWidget(self.datetime) # OK and Cancel buttons self.buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) self.buttons.accepted.connect(self.accept) self.buttons.rejected.connect(self.reject) layout.addWidget(self.buttons) self.setLayout(layout) # get current date and time from the dialog def date_time(self): return self.datetime.dateTime() # static method to create the dialog and return (date, time, accepted) @staticmethod def get_date_time(parent=None): dialog = DateDialog(parent) result = dialog.exec_() date = dialog.date_time() return date.toPyDateTime(), result == QDialog.Accepted
class DatetimeEditField(DataEditField): """ Class for editing datetime fields. """ def __init__(self, parent, title, help_text): self.field = QDateTimeEdit(datetime.now()) self.field.setCalendarPopup(True) self.field.setDisplayFormat("dd-MM-yyyy hh:mm:ss") DataEditField.__init__(self, parent, title, help_text, self.field) def clearField(self): """ Set field to current datetime """ self.field.setDateTime(datetime.now()) def getValue(self): """ Get value of DateTimeEditField """ return qDateTime2Datetime(self.field.dateTime())
def createEditor(self, parent, option, index): """ Crée le widget utilisé pour éditer la valeur d'une cellule Retourne un widget "vierge", i.e. ce n'est pas ici qu'on initialise la valeur du widget. En revanche, c'est ici qu'on peut définir les valeurs min/max acceptées, etc. https://doc.qt.io/qt-5/model-view-programming.html#providing-an-editor """ editor = QDateTimeEdit(parent=parent) editor.setMinimumDate( datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30)) editor.setMaximumDate( datetime.datetime(year=2030, month=9, day=1, hour=18, minute=30)) editor.setDisplayFormat("yyyy-MM-dd HH:mm") #editor.setCalendarPopup(True) # setFrame(): tell whether the line edit draws itself with a frame. # If enabled (the default) the line edit draws itself inside a frame, otherwise the line edit draws itself without any frame. editor.setFrame(False) return editor
class WindowClass(QWidget): def __init__(self, parent=None): super(WindowClass, self).__init__(parent) self.btn = QPushButton(self) #self参数则让该按钮显示当前窗体中 self.btn.setText("点击获取日期信息") self.btn.clicked.connect(self.showdate) self.dateEdit = QDateEdit(self) self.timeEdit = QTimeEdit(self) self.dateTimeEdit = QDateTimeEdit(self) self.dateEdit.setCalendarPopup(True) #self.timeEdit.setCalendarPopup(True)#弹出界面是失效的注意; #self.dateTimeEdit.setCalendarPopup(True)#时间是无法选择的 self.dateEdit.move(10, 200) self.timeEdit.move(10, 100) self.dateTimeEdit.move(10, 300) self.dateEdit.setDisplayFormat("yyyy-MM-dd") self.timeEdit.setDisplayFormat("HH:mm:ss") self.dateTimeEdit.setDisplayFormat("yyyy-MM-dd HH:mm:ss") self.setWindowTitle("QDateEdit和QDateTimeEdit控件使用") def showdate(self): print(self.dateEdit.text())
class Window(QWidget): def __init__(self): super().__init__() # Make widgets ################# self.edit1 = QDateTimeEdit() self.edit2 = QDateTimeEdit() self.edit3 = QDateTimeEdit() self.edit1.setMinimumDate(datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30, second=30)) self.edit2.setMinimumDate(datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30, second=30)) self.edit3.setMinimumDate(datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30, second=30)) self.edit1.setMaximumDate(datetime.datetime(year=2020, month=9, day=1, hour=18, minute=30, second=30)) self.edit2.setMaximumDate(datetime.datetime(year=2020, month=9, day=1, hour=18, minute=30, second=30)) self.edit3.setMaximumDate(datetime.datetime(year=2020, month=9, day=1, hour=18, minute=30, second=30)) self.edit1.setDateTime(datetime.datetime.now()) self.edit2.setDateTime(datetime.datetime.now()) self.edit3.setDateTime(datetime.datetime.now()) self.edit1.setCalendarPopup(True) self.edit2.setCalendarPopup(True) self.edit3.setCalendarPopup(True) # Format: see http://doc.qt.io/qt-5/qdatetime.html#toString-2 self.edit1.setDisplayFormat("yyyy-MM-dd HH:mm") self.edit2.setDisplayFormat("dd/MM/yyyy HH:mm:ss t") self.edit3.setDisplayFormat("dddd d MMMM yyyy h m AP") self.btn = QPushButton("Print") # Set button slot ############## self.btn.clicked.connect(self.printText) # Set the layout ############### vbox = QVBoxLayout() vbox.addWidget(self.edit1) vbox.addWidget(self.edit2) vbox.addWidget(self.edit3) vbox.addWidget(self.btn) self.setLayout(vbox) def printText(self): print(self.edit1.text()) print(self.edit2.text()) print(self.edit3.text())
class Window(QWidget): def __init__(self): super().__init__() # Make widgets ################# self.edit1 = QDateTimeEdit() self.edit2 = QDateTimeEdit() self.edit3 = QDateTimeEdit() self.edit1.setMinimumDate(datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30, second=30)) self.edit2.setMinimumDate(datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30, second=30)) self.edit3.setMinimumDate(datetime.datetime(year=2017, month=9, day=1, hour=8, minute=30, second=30)) self.edit1.setMaximumDate(datetime.datetime(year=2020, month=9, day=1, hour=18, minute=30, second=30)) self.edit2.setMaximumDate(datetime.datetime(year=2020, month=9, day=1, hour=18, minute=30, second=30)) self.edit3.setMaximumDate(datetime.datetime(year=2020, month=9, day=1, hour=18, minute=30, second=30)) self.edit1.setDateTime(datetime.datetime.now()) self.edit2.setDateTime(datetime.datetime.now()) self.edit3.setDateTime(datetime.datetime.now()) #self.edit1.setCalendarPopup(True) #self.edit2.setCalendarPopup(True) #self.edit3.setCalendarPopup(True) # Format: see http://doc.qt.io/qt-5/qdatetime.html#toString-2 self.edit1.setDisplayFormat("yyyy-MM-dd HH:mm") self.edit2.setDisplayFormat("dd/MM/yyyy HH:mm:ss t") self.edit3.setDisplayFormat("dddd d MMMM yyyy h m AP") self.btn = QPushButton("Print") # Set button slot ############## self.btn.clicked.connect(self.printText) # Set the layout ############### vbox = QVBoxLayout() vbox.addWidget(self.edit1) vbox.addWidget(self.edit2) vbox.addWidget(self.edit3) vbox.addWidget(self.btn) self.setLayout(vbox) def printText(self): print(self.edit1.text()) print(self.edit2.text()) print(self.edit3.text())
class Setting_Ui(QWidget): def __init__(self, persepolis_setting): super().__init__() icon = QtGui.QIcon() self.persepolis_setting = persepolis_setting # add support for other languages locale = str(self.persepolis_setting.value('settings/locale')) QLocale.setDefault(QLocale(locale)) self.translator = QTranslator() if self.translator.load(':/translations/locales/ui_' + locale, 'ts'): QCoreApplication.installTranslator(self.translator) self.setWindowIcon(QIcon.fromTheme('persepolis', QIcon(':/persepolis.svg'))) self.setWindowTitle(QCoreApplication.translate("setting_ui_tr", 'Preferences')) # set ui direction ui_direction = self.persepolis_setting.value('ui_direction') if ui_direction == 'rtl': self.setLayoutDirection(Qt.RightToLeft) elif ui_direction in 'ltr': self.setLayoutDirection(Qt.LeftToRight) global icons icons = ':/' + str(self.persepolis_setting.value('settings/icons')) + '/' # main layout window_verticalLayout = QVBoxLayout(self) # setting_tabWidget self.setting_tabWidget = QTabWidget(self) # download_options_tab self.download_options_tab = QWidget() download_options_tab_verticalLayout = QVBoxLayout(self.download_options_tab) download_options_tab_verticalLayout.setContentsMargins(21, 21, 0, 0) # tries tries_horizontalLayout = QHBoxLayout() self.tries_label = QLabel(self.download_options_tab) tries_horizontalLayout.addWidget(self.tries_label) self.tries_spinBox = QSpinBox(self.download_options_tab) self.tries_spinBox.setMinimum(1) tries_horizontalLayout.addWidget(self.tries_spinBox) download_options_tab_verticalLayout.addLayout(tries_horizontalLayout) #wait wait_horizontalLayout = QHBoxLayout() self.wait_label = QLabel(self.download_options_tab) wait_horizontalLayout.addWidget(self.wait_label) self.wait_spinBox = QSpinBox(self.download_options_tab) wait_horizontalLayout.addWidget(self.wait_spinBox) download_options_tab_verticalLayout.addLayout(wait_horizontalLayout) # time_out time_out_horizontalLayout = QHBoxLayout() self.time_out_label = QLabel(self.download_options_tab) time_out_horizontalLayout.addWidget(self.time_out_label) self.time_out_spinBox = QSpinBox(self.download_options_tab) time_out_horizontalLayout.addWidget(self.time_out_spinBox) download_options_tab_verticalLayout.addLayout(time_out_horizontalLayout) # connections connections_horizontalLayout = QHBoxLayout() self.connections_label = QLabel(self.download_options_tab) connections_horizontalLayout.addWidget(self.connections_label) self.connections_spinBox = QSpinBox(self.download_options_tab) self.connections_spinBox.setMinimum(1) self.connections_spinBox.setMaximum(16) connections_horizontalLayout.addWidget(self.connections_spinBox) download_options_tab_verticalLayout.addLayout(connections_horizontalLayout) # rpc_port self.rpc_port_label = QLabel(self.download_options_tab) self.rpc_horizontalLayout = QHBoxLayout() self.rpc_horizontalLayout.addWidget(self.rpc_port_label) self.rpc_port_spinbox = QSpinBox(self.download_options_tab) self.rpc_port_spinbox.setMinimum(1024) self.rpc_port_spinbox.setMaximum(65535) self.rpc_horizontalLayout.addWidget(self.rpc_port_spinbox) download_options_tab_verticalLayout.addLayout( self.rpc_horizontalLayout) # wait_queue wait_queue_horizontalLayout = QHBoxLayout() self.wait_queue_label = QLabel(self.download_options_tab) wait_queue_horizontalLayout.addWidget(self.wait_queue_label) self.wait_queue_time = QDateTimeEdit(self.download_options_tab) self.wait_queue_time.setDisplayFormat('H:mm') wait_queue_horizontalLayout.addWidget(self.wait_queue_time) download_options_tab_verticalLayout.addLayout( wait_queue_horizontalLayout) # change aria2 path aria2_path_verticalLayout = QVBoxLayout() self.aria2_path_checkBox = QCheckBox(self.download_options_tab) aria2_path_verticalLayout.addWidget(self.aria2_path_checkBox) aria2_path_horizontalLayout = QHBoxLayout() self.aria2_path_lineEdit = QLineEdit(self.download_options_tab) aria2_path_horizontalLayout.addWidget(self.aria2_path_lineEdit) self.aria2_path_pushButton = QPushButton(self.download_options_tab) aria2_path_horizontalLayout.addWidget(self.aria2_path_pushButton) aria2_path_verticalLayout.addLayout(aria2_path_horizontalLayout) download_options_tab_verticalLayout.addLayout(aria2_path_verticalLayout) download_options_tab_verticalLayout.addStretch(1) self.setting_tabWidget.addTab(self.download_options_tab, "") # save_as_tab self.save_as_tab = QWidget() save_as_tab_verticalLayout = QVBoxLayout(self.save_as_tab) save_as_tab_verticalLayout.setContentsMargins(20, 30, 0, 0) # download_folder self.download_folder_horizontalLayout = QHBoxLayout() self.download_folder_label = QLabel(self.save_as_tab) self.download_folder_horizontalLayout.addWidget( self.download_folder_label) self.download_folder_lineEdit = QLineEdit(self.save_as_tab) self.download_folder_horizontalLayout.addWidget(self.download_folder_lineEdit) self.download_folder_pushButton = QPushButton(self.save_as_tab) self.download_folder_horizontalLayout.addWidget(self.download_folder_pushButton) save_as_tab_verticalLayout.addLayout(self.download_folder_horizontalLayout) # temp_download_folder self.temp_horizontalLayout = QHBoxLayout() self.temp_download_label = QLabel(self.save_as_tab) self.temp_horizontalLayout.addWidget(self.temp_download_label) self.temp_download_lineEdit = QLineEdit(self.save_as_tab) self.temp_horizontalLayout.addWidget(self.temp_download_lineEdit) self.temp_download_pushButton = QPushButton(self.save_as_tab) self.temp_horizontalLayout.addWidget(self.temp_download_pushButton) save_as_tab_verticalLayout.addLayout(self.temp_horizontalLayout) # create subfolder self.subfolder_checkBox = QCheckBox(self.save_as_tab) save_as_tab_verticalLayout.addWidget(self.subfolder_checkBox) save_as_tab_verticalLayout.addStretch(1) self.setting_tabWidget.addTab(self.save_as_tab, "") # notifications_tab self.notifications_tab = QWidget() notification_tab_verticalLayout = QVBoxLayout(self.notifications_tab) notification_tab_verticalLayout.setContentsMargins(21, 21, 0, 0) self.enable_notifications_checkBox = QCheckBox(self.notifications_tab) notification_tab_verticalLayout.addWidget(self.enable_notifications_checkBox) self.sound_frame = QFrame(self.notifications_tab) self.sound_frame.setFrameShape(QFrame.StyledPanel) self.sound_frame.setFrameShadow(QFrame.Raised) verticalLayout = QVBoxLayout(self.sound_frame) self.volume_label = QLabel(self.sound_frame) verticalLayout.addWidget(self.volume_label) self.volume_dial = QDial(self.sound_frame) self.volume_dial.setProperty("value", 100) verticalLayout.addWidget(self.volume_dial) notification_tab_verticalLayout.addWidget(self.sound_frame) # message_notification message_notification_horizontalLayout = QHBoxLayout() self.notification_label = QLabel(self.notifications_tab) message_notification_horizontalLayout.addWidget(self.notification_label) self.notification_comboBox = QComboBox(self.notifications_tab) message_notification_horizontalLayout.addWidget(self.notification_comboBox) notification_tab_verticalLayout.addLayout(message_notification_horizontalLayout) notification_tab_verticalLayout.addStretch(1) self.setting_tabWidget.addTab(self.notifications_tab, "") # style_tab self.style_tab = QWidget() style_tab_verticalLayout = QVBoxLayout(self.style_tab) style_tab_verticalLayout.setContentsMargins(21, 21, 0, 0) # style style_horizontalLayout = QHBoxLayout() self.style_label = QLabel(self.style_tab) style_horizontalLayout.addWidget(self.style_label) self.style_comboBox = QComboBox(self.style_tab) style_horizontalLayout.addWidget(self.style_comboBox) style_tab_verticalLayout.addLayout(style_horizontalLayout) # language language_horizontalLayout = QHBoxLayout() self.lang_label = QLabel(self.style_tab) language_horizontalLayout.addWidget(self.lang_label) self.lang_comboBox = QComboBox(self.style_tab) language_horizontalLayout.addWidget(self.lang_comboBox) style_tab_verticalLayout.addLayout(language_horizontalLayout) language_horizontalLayout = QHBoxLayout() self.lang_label.setText(QCoreApplication.translate("setting_ui_tr", "Language:")) # color scheme self.color_label = QLabel(self.style_tab) language_horizontalLayout.addWidget(self.color_label) self.color_comboBox = QComboBox(self.style_tab) language_horizontalLayout.addWidget(self.color_comboBox) style_tab_verticalLayout.addLayout(language_horizontalLayout) # icons icons_horizontalLayout = QHBoxLayout() self.icon_label = QLabel(self.style_tab) icons_horizontalLayout.addWidget(self.icon_label) self.icon_comboBox = QComboBox(self.style_tab) icons_horizontalLayout.addWidget(self.icon_comboBox) style_tab_verticalLayout.addLayout(icons_horizontalLayout) self.icons_size_horizontalLayout = QHBoxLayout() self.icons_size_label = QLabel(self.style_tab) self.icons_size_horizontalLayout.addWidget(self.icons_size_label) self.icons_size_comboBox = QComboBox(self.style_tab) self.icons_size_horizontalLayout.addWidget(self.icons_size_comboBox) style_tab_verticalLayout.addLayout(self.icons_size_horizontalLayout) # font font_horizontalLayout = QHBoxLayout() self.font_checkBox = QCheckBox(self.style_tab) font_horizontalLayout.addWidget(self.font_checkBox) self.fontComboBox = QFontComboBox(self.style_tab) font_horizontalLayout.addWidget(self.fontComboBox) self.font_size_label = QLabel(self.style_tab) font_horizontalLayout.addWidget(self.font_size_label) self.font_size_spinBox = QSpinBox(self.style_tab) self.font_size_spinBox.setMinimum(1) font_horizontalLayout.addWidget(self.font_size_spinBox) style_tab_verticalLayout.addLayout(font_horizontalLayout) self.setting_tabWidget.addTab(self.style_tab, "") window_verticalLayout.addWidget(self.setting_tabWidget) # Enable system tray icon self.enable_system_tray_checkBox = QCheckBox(self.style_tab) style_tab_verticalLayout.addWidget(self.enable_system_tray_checkBox) # after_download dialog self.after_download_checkBox = QCheckBox() style_tab_verticalLayout.addWidget(self.after_download_checkBox) # show_menubar_checkbox self.show_menubar_checkbox = QCheckBox() style_tab_verticalLayout.addWidget(self.show_menubar_checkbox) # show_sidepanel_checkbox self.show_sidepanel_checkbox = QCheckBox() style_tab_verticalLayout.addWidget(self.show_sidepanel_checkbox) # hide progress window self.show_progress_window_checkbox = QCheckBox() style_tab_verticalLayout.addWidget(self.show_progress_window_checkbox) # add persepolis to startup self.startup_checkbox = QCheckBox() style_tab_verticalLayout.addWidget(self.startup_checkbox) # keep system awake self.keep_awake_checkBox = QCheckBox() style_tab_verticalLayout.addWidget(self.keep_awake_checkBox) style_tab_verticalLayout.addStretch(1) # columns_tab self.columns_tab = QWidget() columns_tab_verticalLayout = QVBoxLayout(self.columns_tab) columns_tab_verticalLayout.setContentsMargins(21, 21, 0, 0) # creating checkBox for columns self.show_column_label = QLabel() self.column0_checkBox = QCheckBox() self.column1_checkBox = QCheckBox() self.column2_checkBox = QCheckBox() self.column3_checkBox = QCheckBox() self.column4_checkBox = QCheckBox() self.column5_checkBox = QCheckBox() self.column6_checkBox = QCheckBox() self.column7_checkBox = QCheckBox() self.column10_checkBox = QCheckBox() self.column11_checkBox = QCheckBox() self.column12_checkBox = QCheckBox() columns_tab_verticalLayout.addWidget(self.show_column_label) columns_tab_verticalLayout.addWidget(self.column0_checkBox) columns_tab_verticalLayout.addWidget(self.column1_checkBox) columns_tab_verticalLayout.addWidget(self.column2_checkBox) columns_tab_verticalLayout.addWidget(self.column3_checkBox) columns_tab_verticalLayout.addWidget(self.column4_checkBox) columns_tab_verticalLayout.addWidget(self.column5_checkBox) columns_tab_verticalLayout.addWidget(self.column6_checkBox) columns_tab_verticalLayout.addWidget(self.column7_checkBox) columns_tab_verticalLayout.addWidget(self.column10_checkBox) columns_tab_verticalLayout.addWidget(self.column11_checkBox) columns_tab_verticalLayout.addWidget(self.column12_checkBox) columns_tab_verticalLayout.addStretch(1) self.setting_tabWidget.addTab(self.columns_tab, '') # video_finder_tab self.video_finder_tab = QWidget() video_finder_layout = QVBoxLayout(self.video_finder_tab) video_finder_layout.setContentsMargins(21, 21, 0, 0) video_finder_tab_verticalLayout = QVBoxLayout() # Whether to enable video link capturing. self.enable_video_finder_checkbox = QCheckBox(self.video_finder_tab) video_finder_layout.addWidget(self.enable_video_finder_checkbox) # If we should hide videos with no audio self.hide_no_audio_checkbox = QCheckBox(self.video_finder_tab) video_finder_tab_verticalLayout.addWidget(self.hide_no_audio_checkbox) # If we should hide audios without video self.hide_no_video_checkbox = QCheckBox(self.video_finder_tab) video_finder_tab_verticalLayout.addWidget(self.hide_no_video_checkbox) max_links_horizontalLayout = QHBoxLayout() # max_links_label self.max_links_label = QLabel(self.video_finder_tab) max_links_horizontalLayout.addWidget(self.max_links_label) # max_links_spinBox self.max_links_spinBox = QSpinBox(self.video_finder_tab) self.max_links_spinBox.setMinimum(1) self.max_links_spinBox.setMaximum(16) max_links_horizontalLayout.addWidget(self.max_links_spinBox) video_finder_tab_verticalLayout.addLayout(max_links_horizontalLayout) self.video_finder_dl_path_horizontalLayout = QHBoxLayout() self.video_finder_frame = QFrame(self.video_finder_tab) self.video_finder_frame.setLayout(video_finder_tab_verticalLayout) video_finder_tab_verticalLayout.addStretch(1) video_finder_layout.addWidget(self.video_finder_frame) self.setting_tabWidget.addTab(self.video_finder_tab, "") # window buttons buttons_horizontalLayout = QHBoxLayout() buttons_horizontalLayout.addStretch(1) self.defaults_pushButton = QPushButton(self) buttons_horizontalLayout.addWidget(self.defaults_pushButton) self.cancel_pushButton = QPushButton(self) self.cancel_pushButton.setIcon(QIcon(icons + 'remove')) buttons_horizontalLayout.addWidget(self.cancel_pushButton) self.ok_pushButton = QPushButton(self) self.ok_pushButton.setIcon(QIcon(icons + 'ok')) buttons_horizontalLayout.addWidget(self.ok_pushButton) window_verticalLayout.addLayout(buttons_horizontalLayout) # set style_tab for default self.setting_tabWidget.setCurrentIndex(3) # labels and translations self.setWindowTitle(QCoreApplication.translate("setting_ui_tr", "Preferences")) self.tries_label.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Set number of tries if download failed.</p></body></html>")) self.tries_label.setText(QCoreApplication.translate("setting_ui_tr", "Number of tries: ")) self.tries_spinBox.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Set number of tries if download failed.</p></body></html>")) self.wait_label.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Set the seconds to wait between retries. Download manager will retry downloads when the HTTP server returns a 503 response.</p></body></html>")) self.wait_label.setText(QCoreApplication.translate("setting_ui_tr", "Wait between retries (seconds): ")) self.wait_spinBox.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Set the seconds to wait between retries. Download manager will retry downloads when the HTTP server returns a 503 response.</p></body></html>")) self.time_out_label.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Set timeout in seconds. </p></body></html>")) self.time_out_label.setText(QCoreApplication.translate("setting_ui_tr", "Timeout (seconds): ")) self.time_out_spinBox.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Set timeout in seconds. </p></body></html>")) self.connections_label.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Using multiple connections can help speed up your download.</p></body></html>")) self.connections_label.setText(QCoreApplication.translate("setting_ui_tr", "Number of connections: ")) self.connections_spinBox.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Using multiple connections can help speed up your download.</p></body></html>")) self.rpc_port_label.setText(QCoreApplication.translate("setting_ui_tr", "RPC port number: ")) self.rpc_port_spinbox.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p> Specify a port number for JSON-RPC/XML-RPC server to listen to. Possible Values: 1024 - 65535 Default: 6801 </p></body></html>")) self.wait_queue_label.setText(QCoreApplication.translate("setting_ui_tr", 'Wait between every downloads in queue:')) self.aria2_path_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Change Aria2 default path')) self.aria2_path_pushButton.setText(QCoreApplication.translate("setting_ui_tr", 'Change')) aria2_path_tooltip =QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Attention: Wrong path may have caused problem! Do it carefully or don't change default setting!</p></body></html>" ) self.aria2_path_checkBox.setToolTip(aria2_path_tooltip) self.aria2_path_lineEdit.setToolTip(aria2_path_tooltip) self.aria2_path_pushButton.setToolTip(aria2_path_tooltip) self.setting_tabWidget.setTabText(self.setting_tabWidget.indexOf( self.download_options_tab), QCoreApplication.translate("setting_ui_tr", "Download Options")) self.download_folder_label.setText(QCoreApplication.translate("setting_ui_tr", "Download Folder: ")) self.download_folder_pushButton.setText(QCoreApplication.translate("setting_ui_tr", "Change")) self.temp_download_label.setText(QCoreApplication.translate("setting_ui_tr", "Temporary Download Folder: ")) self.temp_download_pushButton.setText(QCoreApplication.translate("setting_ui_tr", "Change")) self.subfolder_checkBox.setText(QCoreApplication.translate("setting_ui_tr", "Create subfolders for Music,Videos,... in default download folder")) self.setting_tabWidget.setTabText( self.setting_tabWidget.indexOf(self.save_as_tab), QCoreApplication.translate("setting_ui_tr", "Save as")) self.enable_notifications_checkBox.setText( QCoreApplication.translate("setting_ui_tr", "Enable notification sounds")) self.volume_label.setText(QCoreApplication.translate("setting_ui_tr", "Volume: ")) self.setting_tabWidget.setTabText(self.setting_tabWidget.indexOf( self.notifications_tab), QCoreApplication.translate("setting_ui_tr", "Notifications")) self.style_label.setText(QCoreApplication.translate("setting_ui_tr", "Style: ")) self.color_label.setText(QCoreApplication.translate("setting_ui_tr", "Color scheme: ")) self.icon_label.setText(QCoreApplication.translate("setting_ui_tr", "Icons: ")) self.icons_size_label.setText(QCoreApplication.translate("setting_ui_tr", "Toolbar's icons size: ")) self.notification_label.setText(QCoreApplication.translate("setting_ui_tr", "Notification type: ")) self.font_checkBox.setText(QCoreApplication.translate("setting_ui_tr", "Font: ")) self.font_size_label.setText(QCoreApplication.translate("setting_ui_tr", "Size: ")) self.enable_system_tray_checkBox.setText(QCoreApplication.translate("setting_ui_tr", "Enable system tray icon.")) self.after_download_checkBox.setText( QCoreApplication.translate("setting_ui_tr", "Show download complete dialog when download has finished.")) self.show_menubar_checkbox.setText(QCoreApplication.translate("setting_ui_tr", "Show menubar.")) self.show_sidepanel_checkbox.setText(QCoreApplication.translate("setting_ui_tr", "Show side panel.")) self.show_progress_window_checkbox.setText( QCoreApplication.translate("setting_ui_tr", "Show download's progress window")) self.startup_checkbox.setText(QCoreApplication.translate("setting_ui_tr", "Run Persepolis at startup")) self.keep_awake_checkBox.setText(QCoreApplication.translate("setting_ui_tr", "Keep system awake!")) self.keep_awake_checkBox.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>This option is preventing system from going to sleep.\ This is necessary if your power manager is suspending system automatically. </p></body></html>")) self.wait_queue_time.setToolTip( QCoreApplication.translate("setting_ui_tr", "<html><head/><body><p>Format HH:MM</p></body></html>")) self.setting_tabWidget.setTabText( self.setting_tabWidget.indexOf(self.style_tab), QCoreApplication.translate("setting_ui_tr", "Preferences")) # columns_tab self.show_column_label.setText(QCoreApplication.translate("setting_ui_tr", 'Show this columns:')) self.column0_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'File Name')) self.column1_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Status')) self.column2_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Size')) self.column3_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Downloaded')) self.column4_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Percentage')) self.column5_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Connections')) self.column6_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Transfer rate')) self.column7_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Estimated time left')) self.column10_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'First try date')) self.column11_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Last try date')) self.column12_checkBox.setText(QCoreApplication.translate("setting_ui_tr", 'Category')) self.setting_tabWidget.setTabText( self.setting_tabWidget.indexOf(self.columns_tab), QCoreApplication.translate("setting_ui_tr", "Columns customization")) # Video Finder options tab self.setting_tabWidget.setTabText(self.setting_tabWidget.indexOf( self.video_finder_tab), QCoreApplication.translate("setting_ui_tr", "Video Finder Options")) self.enable_video_finder_checkbox.setText(QCoreApplication.translate("setting_ui_tr", 'Enable Video Finder')) self.hide_no_audio_checkbox.setText(QCoreApplication.translate("setting_ui_tr", 'Hide videos with no audio')) self.hide_no_video_checkbox.setText(QCoreApplication.translate("setting_ui_tr", 'Hide audios with no video')) self.max_links_label.setText(QCoreApplication.translate("setting_ui_tr", 'Maximum number of links to capture:<br/>' '<small>(If browser sends multiple video links at a time)</small>')) # window buttons self.defaults_pushButton.setText(QCoreApplication.translate("setting_ui_tr", "Defaults")) self.cancel_pushButton.setText(QCoreApplication.translate("setting_ui_tr", "Cancel")) self.ok_pushButton.setText(QCoreApplication.translate("setting_ui_tr", "OK"))
class MainWindow_Ui(QMainWindow): def __init__(self, persepolis_setting): super().__init__() # MainWindow self.persepolis_setting = persepolis_setting # add support for other languages locale = str(self.persepolis_setting.value('settings/locale')) QLocale.setDefault(QLocale(locale)) self.translator = QTranslator() if self.translator.load(':/translations/locales/ui_' + locale, 'ts'): QCoreApplication.installTranslator(self.translator) # set ui direction ui_direction = self.persepolis_setting.value('ui_direction') if ui_direction == 'rtl': self.setLayoutDirection(Qt.RightToLeft) elif ui_direction in 'ltr': self.setLayoutDirection(Qt.LeftToRight) icons = ':/' + \ str(self.persepolis_setting.value('settings/icons')) + '/' self.setWindowTitle(QCoreApplication.translate("mainwindow_ui_tr", "Persepolis Download Manager")) self.setWindowIcon(QIcon.fromTheme('persepolis', QIcon(':/persepolis.svg'))) self.centralwidget = QWidget(self) self.verticalLayout = QVBoxLayout(self.centralwidget) # enable drag and drop self.setAcceptDrops(True) # frame self.frame = QFrame(self.centralwidget) # download_table_horizontalLayout download_table_horizontalLayout = QHBoxLayout() horizontal_splitter = QSplitter(Qt.Horizontal) vertical_splitter = QSplitter(Qt.Vertical) # category_tree self.category_tree_qwidget = QWidget(self) category_tree_verticalLayout = QVBoxLayout() self.category_tree = CategoryTreeView(self) category_tree_verticalLayout.addWidget(self.category_tree) self.category_tree_model = QStandardItemModel() self.category_tree.setModel(self.category_tree_model) category_table_header = [QCoreApplication.translate("mainwindow_ui_tr", 'Category')] self.category_tree_model.setHorizontalHeaderLabels( category_table_header) self.category_tree.header().setStretchLastSection(True) self.category_tree.header().setDefaultAlignment(Qt.AlignCenter) # queue_panel self.queue_panel_widget = QWidget(self) queue_panel_verticalLayout_main = QVBoxLayout(self.queue_panel_widget) # queue_panel_show_button self.queue_panel_show_button = QPushButton(self) queue_panel_verticalLayout_main.addWidget(self.queue_panel_show_button) # queue_panel_widget_frame self.queue_panel_widget_frame = QFrame(self) self.queue_panel_widget_frame.setFrameShape(QFrame.StyledPanel) self.queue_panel_widget_frame.setFrameShadow(QFrame.Raised) queue_panel_verticalLayout_main.addWidget( self.queue_panel_widget_frame) queue_panel_verticalLayout = QVBoxLayout(self.queue_panel_widget_frame) queue_panel_verticalLayout_main.setContentsMargins(50, -1, 50, -1) # start_end_frame self.start_end_frame = QFrame(self) # start time start_verticalLayout = QVBoxLayout(self.start_end_frame) self.start_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.start_checkBox) self.start_frame = QFrame(self) self.start_frame.setFrameShape(QFrame.StyledPanel) self.start_frame.setFrameShadow(QFrame.Raised) start_frame_verticalLayout = QVBoxLayout(self.start_frame) self.start_time_qDataTimeEdit = QDateTimeEdit(self.start_frame) self.start_time_qDataTimeEdit.setDisplayFormat('H:mm') start_frame_verticalLayout.addWidget(self.start_time_qDataTimeEdit) start_verticalLayout.addWidget(self.start_frame) # end time self.end_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.end_checkBox) self.end_frame = QFrame(self) self.end_frame.setFrameShape(QFrame.StyledPanel) self.end_frame.setFrameShadow(QFrame.Raised) end_frame_verticalLayout = QVBoxLayout(self.end_frame) self.end_time_qDateTimeEdit = QDateTimeEdit(self.end_frame) self.end_time_qDateTimeEdit.setDisplayFormat('H:mm') end_frame_verticalLayout.addWidget(self.end_time_qDateTimeEdit) start_verticalLayout.addWidget(self.end_frame) self.reverse_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.reverse_checkBox) queue_panel_verticalLayout.addWidget(self.start_end_frame) # limit_after_frame self.limit_after_frame = QFrame(self) # limit_checkBox limit_verticalLayout = QVBoxLayout(self.limit_after_frame) self.limit_checkBox = QCheckBox(self) limit_verticalLayout.addWidget(self.limit_checkBox) # limit_frame self.limit_frame = QFrame(self) self.limit_frame.setFrameShape(QFrame.StyledPanel) self.limit_frame.setFrameShadow(QFrame.Raised) limit_verticalLayout.addWidget(self.limit_frame) limit_frame_verticalLayout = QVBoxLayout(self.limit_frame) # limit_spinBox limit_frame_horizontalLayout = QHBoxLayout() self.limit_spinBox = QDoubleSpinBox(self) self.limit_spinBox.setMinimum(1) self.limit_spinBox.setMaximum(1023) limit_frame_horizontalLayout.addWidget(self.limit_spinBox) # limit_comboBox self.limit_comboBox = QComboBox(self) self.limit_comboBox.addItem("") self.limit_comboBox.addItem("") limit_frame_horizontalLayout.addWidget(self.limit_comboBox) limit_frame_verticalLayout.addLayout(limit_frame_horizontalLayout) # limit_pushButton self.limit_pushButton = QPushButton(self) limit_frame_verticalLayout.addWidget(self.limit_pushButton) # after_checkBox self.after_checkBox = QCheckBox(self) limit_verticalLayout.addWidget(self.after_checkBox) # after_frame self.after_frame = QFrame(self) self.after_frame.setFrameShape(QFrame.StyledPanel) self.after_frame.setFrameShadow(QFrame.Raised) limit_verticalLayout.addWidget(self.after_frame) after_frame_verticalLayout = QVBoxLayout(self.after_frame) # after_comboBox self.after_comboBox = QComboBox(self) self.after_comboBox.addItem("") after_frame_verticalLayout.addWidget(self.after_comboBox) # after_pushButton self.after_pushButton = QPushButton(self) after_frame_verticalLayout.addWidget(self.after_pushButton) queue_panel_verticalLayout.addWidget(self.limit_after_frame) category_tree_verticalLayout.addWidget(self.queue_panel_widget) # keep_awake_checkBox self.keep_awake_checkBox = QCheckBox(self) queue_panel_verticalLayout.addWidget(self.keep_awake_checkBox) self.category_tree_qwidget.setLayout(category_tree_verticalLayout) horizontal_splitter.addWidget(self.category_tree_qwidget) # download table widget self.download_table_content_widget = QWidget(self) download_table_content_widget_verticalLayout = QVBoxLayout( self.download_table_content_widget) # download_table self.download_table = DownloadTableWidget(self) vertical_splitter.addWidget(self.download_table) horizontal_splitter.addWidget(self.download_table_content_widget) self.download_table.setColumnCount(13) self.download_table.setSelectionBehavior(QAbstractItemView.SelectRows) self.download_table.setEditTriggers(QAbstractItemView.NoEditTriggers) self.download_table.verticalHeader().hide() # hide gid and download dictioanry section self.download_table.setColumnHidden(8, True) self.download_table.setColumnHidden(9, True) download_table_header = [QCoreApplication.translate("mainwindow_ui_tr", 'File Name'), QCoreApplication.translate("mainwindow_ui_tr",'Status'), QCoreApplication.translate("mainwindow_ui_tr", 'Size'), QCoreApplication.translate("mainwindow_ui_tr", 'Downloaded'), QCoreApplication.translate("mainwindow_ui_tr", 'Percentage'), QCoreApplication.translate("mainwindow_ui_tr", 'Connections'), QCoreApplication.translate("mainwindow_ui_tr", 'Transfer rate'), QCoreApplication.translate("mainwindow_ui_tr",'Estimated time left'), 'Gid', QCoreApplication.translate("mainwindow_ui_tr",'Link'), QCoreApplication.translate("mainwindow_ui_tr", 'First try date'), QCoreApplication.translate("mainwindow_ui_tr", 'Last try date'), QCoreApplication.translate("mainwindow_ui_tr",'Category')] self.download_table.setHorizontalHeaderLabels(download_table_header) # fixing the size of download_table when window is Maximized! self.download_table.horizontalHeader().setSectionResizeMode(0) self.download_table.horizontalHeader().setStretchLastSection(True) horizontal_splitter.setStretchFactor(0, 3) # category_tree width horizontal_splitter.setStretchFactor(1, 10) # ratio of tables's width # video_finder_widget self.video_finder_widget = QWidget(self) video_finder_horizontalLayout = QHBoxLayout(self.video_finder_widget) self.muxing_pushButton = QPushButton(self) self.muxing_pushButton.setIcon(QIcon(icons + 'video_finder')) video_finder_horizontalLayout.addWidget(self.muxing_pushButton) video_finder_horizontalLayout.addSpacing(20) video_audio_verticalLayout = QVBoxLayout() self.video_label = QLabel(self) video_audio_verticalLayout.addWidget(self.video_label) self.audio_label = QLabel(self) video_audio_verticalLayout.addWidget(self.audio_label) video_finder_horizontalLayout.addLayout(video_audio_verticalLayout) status_muxing_verticalLayout = QVBoxLayout() self.video_finder_status_label = QLabel(self) status_muxing_verticalLayout.addWidget(self.video_finder_status_label) self.muxing_status_label = QLabel(self) status_muxing_verticalLayout.addWidget(self.muxing_status_label) video_finder_horizontalLayout.addLayout(status_muxing_verticalLayout) vertical_splitter.addWidget(self.video_finder_widget) download_table_content_widget_verticalLayout.addWidget(vertical_splitter) download_table_horizontalLayout.addWidget(horizontal_splitter) self.frame.setLayout(download_table_horizontalLayout) self.verticalLayout.addWidget(self.frame) self.setCentralWidget(self.centralwidget) # menubar self.menubar = QMenuBar(self) self.menubar.setGeometry(QRect(0, 0, 600, 24)) self.setMenuBar(self.menubar) fileMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&File')) editMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&Edit')) viewMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&View')) downloadMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&Download')) queueMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&Queue')) videoFinderMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", 'V&ideo Finder')) helpMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&Help')) # viewMenu submenus sortMenu = viewMenu.addMenu(QCoreApplication.translate("mainwindow_ui_tr", 'Sort by')) # statusbar self.statusbar = QStatusBar(self) self.setStatusBar(self.statusbar) self.statusbar.showMessage(QCoreApplication.translate("mainwindow_ui_tr", "Persepolis Download Manager")) # toolBar self.toolBar2 = QToolBar(self) self.addToolBar(Qt.TopToolBarArea, self.toolBar2) self.toolBar2.setWindowTitle(QCoreApplication.translate("mainwindow_ui_tr", 'Menu')) self.toolBar2.setFloatable(False) self.toolBar2.setMovable(False) self.toolBar = QToolBar(self) self.addToolBar(Qt.TopToolBarArea, self.toolBar) self.toolBar.setWindowTitle(QCoreApplication.translate("mainwindow_ui_tr", 'Toolbar')) self.toolBar.setFloatable(False) self.toolBar.setMovable(False) #toolBar and menubar and actions self.persepolis_setting.beginGroup('settings/shortcuts') # videoFinderAddLinkAction self.videoFinderAddLinkAction = QAction(QIcon(icons + 'video_finder'), QCoreApplication.translate("mainwindow_ui_tr", 'Find Video Links'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Download video or audio from Youtube, Vimeo, etc...'), triggered=self.showVideoFinderAddLinkWindow) self.videoFinderAddLinkAction_shortcut = QShortcut(self.persepolis_setting.value('video_finder_shortcut'), self, self.showVideoFinderAddLinkWindow) videoFinderMenu.addAction(self.videoFinderAddLinkAction) # stopAllAction self.stopAllAction = QAction(QIcon(icons + 'stop_all'), QCoreApplication.translate("mainwindow_ui_tr", 'Stop all active downloads'), self, statusTip='Stop all active downloads', triggered=self.stopAllDownloads) downloadMenu.addAction(self.stopAllAction) # sort_file_name_Action self.sort_file_name_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'File name'), self, triggered=self.sortByName) sortMenu.addAction(self.sort_file_name_Action) # sort_file_size_Action self.sort_file_size_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'File size'), self, triggered=self.sortBySize) sortMenu.addAction(self.sort_file_size_Action) # sort_first_try_date_Action self.sort_first_try_date_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'First try date'), self, triggered=self.sortByFirstTry) sortMenu.addAction(self.sort_first_try_date_Action) # sort_last_try_date_Action self.sort_last_try_date_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Last try date'), self, triggered=self.sortByLastTry) sortMenu.addAction(self.sort_last_try_date_Action) # sort_download_status_Action self.sort_download_status_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Download status'), self, triggered=self.sortByStatus) sortMenu.addAction(self.sort_download_status_Action) # trayAction self.trayAction = QAction(QCoreApplication.translate("mainwindow_ui_tr", 'Show system tray icon'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Show/Hide system tray icon"), triggered=self.showTray) self.trayAction.setCheckable(True) viewMenu.addAction(self.trayAction) # showMenuBarAction self.showMenuBarAction = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Show menubar'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Show menubar'), triggered=self.showMenuBar) self.showMenuBarAction.setCheckable(True) viewMenu.addAction(self.showMenuBarAction) # showSidePanelAction self.showSidePanelAction = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Show side panel'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Show side panel'), triggered=self.showSidePanel) self.showSidePanelAction.setCheckable(True) viewMenu.addAction(self.showSidePanelAction) # minimizeAction self.minimizeAction = QAction(QIcon(icons + 'minimize'), QCoreApplication.translate("mainwindow_ui_tr", 'Minimize to system tray'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Minimize to system tray"), triggered=self.minMaxTray) self.minimizeAction_shortcut = QShortcut(self.persepolis_setting.value('hide_window_shortcut'), self, self.minMaxTray) viewMenu.addAction(self.minimizeAction) # addlinkAction self.addlinkAction = QAction(QIcon(icons + 'add'), QCoreApplication.translate("mainwindow_ui_tr", 'Add New Download Link'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Add New Download Link"), triggered=self.addLinkButtonPressed) self.addlinkAction_shortcut = QShortcut(self.persepolis_setting.value('add_new_download_shortcut'), self, self.addLinkButtonPressed) fileMenu.addAction(self.addlinkAction) # importText self.addtextfileAction = QAction(QIcon(icons + 'file'), QCoreApplication.translate("mainwindow_ui_tr", 'Import links from text file'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Create a Text file and put links in it.line by line!'), triggered=self.importText) self.addtextfileAction_shortcut = QShortcut(self.persepolis_setting.value('import_text_shortcut'), self, self.importText) fileMenu.addAction(self.addtextfileAction) # resumeAction self.resumeAction = QAction(QIcon(icons + 'play'), QCoreApplication.translate("mainwindow_ui_tr", 'Resume Download'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Resume Download"), triggered=self.resumeButtonPressed) downloadMenu.addAction(self.resumeAction) # pauseAction self.pauseAction = QAction(QIcon(icons + 'pause'), QCoreApplication.translate("mainwindow_ui_tr", 'Pause Download'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Pause Download"), triggered=self.pauseButtonPressed) downloadMenu.addAction(self.pauseAction) # stopAction self.stopAction = QAction(QIcon(icons + 'stop'), QCoreApplication.translate("mainwindow_ui_tr", 'Stop Download'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Stop/Cancel Download"), triggered=self.stopButtonPressed) downloadMenu.addAction(self.stopAction) # propertiesAction self.propertiesAction = QAction(QIcon(icons + 'setting'), QCoreApplication.translate("mainwindow_ui_tr", 'Properties'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Properties"), triggered=self.propertiesButtonPressed) downloadMenu.addAction(self.propertiesAction) # progressAction self.progressAction = QAction(QIcon(icons + 'window'), QCoreApplication.translate("mainwindow_ui_tr", 'Progress'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Progress"), triggered=self.progressButtonPressed) downloadMenu.addAction(self.progressAction) # openFileAction self.openFileAction = QAction(QIcon( icons + 'file'), QCoreApplication.translate("mainwindow_ui_tr", 'Open file'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Open file'), triggered=self.openFile) fileMenu.addAction(self.openFileAction) # openDownloadFolderAction self.openDownloadFolderAction = QAction(QIcon( icons + 'folder'), QCoreApplication.translate("mainwindow_ui_tr", 'Open download folder'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Open download folder'), triggered=self.openDownloadFolder) fileMenu.addAction(self.openDownloadFolderAction) # openDefaultDownloadFolderAction self.openDefaultDownloadFolderAction = QAction(QIcon( icons + 'folder'), QCoreApplication.translate("mainwindow_ui_tr", 'Open default download folder'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Open default download folder'), triggered=self.openDefaultDownloadFolder) fileMenu.addAction(self.openDefaultDownloadFolderAction) # exitAction self.exitAction = QAction(QIcon(icons + 'exit'), QCoreApplication.translate("mainwindow_ui_tr", 'Exit'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Exit"), triggered=self.closeAction) self.exitAction_shortcut = QShortcut(self.persepolis_setting.value('quit_shortcut'), self, self.closeAction) fileMenu.addAction(self.exitAction) # clearAction self.clearAction = QAction(QIcon(icons + 'multi_remove'), QCoreApplication.translate("mainwindow_ui_tr", 'Clear download list'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Clear all items in download list'), triggered=self.clearDownloadList) editMenu.addAction(self.clearAction) # removeSelectedAction self.removeSelectedAction = QAction(QIcon(icons + 'remove'), QCoreApplication.translate("mainwindow_ui_tr", 'Remove selected downloads from list'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Remove selected downloads form list'), triggered=self.removeSelected) self.removeSelectedAction_shortcut = QShortcut(self.persepolis_setting.value('remove_shortcut'), self, self.removeSelected) editMenu.addAction(self.removeSelectedAction) self.removeSelectedAction.setEnabled(False) # deleteSelectedAction self.deleteSelectedAction = QAction(QIcon(icons + 'trash'), QCoreApplication.translate("mainwindow_ui_tr", 'Delete selected download files'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Delete selected download files'), triggered=self.deleteSelected) self.deleteSelectedAction_shortcut = QShortcut(self.persepolis_setting.value('delete_shortcut'), self, self.deleteSelected) editMenu.addAction(self.deleteSelectedAction) self.deleteSelectedAction.setEnabled(False) # moveSelectedDownloadsAction self.moveSelectedDownloadsAction = QAction(QIcon(icons + 'folder'), QCoreApplication.translate("mainwindow_ui_tr", 'move selected download files to another destination'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'move selected download files to another destination'), triggered=self.moveSelectedDownloads) editMenu.addAction(self.moveSelectedDownloadsAction) self.moveSelectedDownloadsAction.setEnabled(False) # createQueueAction self.createQueueAction = QAction(QIcon(icons + 'add_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Create new queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Create new download queue'), triggered=self.createQueue) queueMenu.addAction(self.createQueueAction) # removeQueueAction self.removeQueueAction = QAction(QIcon(icons + 'remove_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Remove this queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Remove this queue'), triggered=self.removeQueue) queueMenu.addAction(self.removeQueueAction) # startQueueAction self.startQueueAction = QAction(QIcon( icons + 'start_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Start this queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Start this queue'), triggered=self.startQueue) queueMenu.addAction(self.startQueueAction) # stopQueueAction self.stopQueueAction = QAction(QIcon( icons + 'stop_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Stop this queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Stop this queue'), triggered=self.stopQueue) queueMenu.addAction(self.stopQueueAction) # moveUpSelectedAction self.moveUpSelectedAction = QAction(QIcon(icons + 'multi_up'), QCoreApplication.translate("mainwindow_ui_tr", 'Move up selected items'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Move currently selected items up by one row'), triggered=self.moveUpSelected) self.moveUpSelectedAction_shortcut = QShortcut(self.persepolis_setting.value('move_up_selection_shortcut'), self, self.moveUpSelected) queueMenu.addAction(self.moveUpSelectedAction) # moveDownSelectedAction self.moveDownSelectedAction = QAction(QIcon(icons + 'multi_down'), QCoreApplication.translate("mainwindow_ui_tr", 'Move down selected items'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Move currently selected items down by one row'), triggered=self.moveDownSelected) self.moveDownSelectedAction_shortcut = QShortcut(self.persepolis_setting.value('move_down_selection_shortcut'), self, self.moveDownSelected) queueMenu.addAction(self.moveDownSelectedAction) # preferencesAction self.preferencesAction = QAction(QIcon(icons + 'preferences'), QCoreApplication.translate("mainwindow_ui_tr", 'Preferences'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Preferences'), triggered=self.openPreferences, menuRole=5) editMenu.addAction(self.preferencesAction) # aboutAction self.aboutAction = QAction(QIcon( icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'About'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'About'), triggered=self.openAbout, menuRole=4) helpMenu.addAction(self.aboutAction) # issueAction self.issueAction = QAction(QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Report an issue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Report an issue'), triggered=self.reportIssue) helpMenu.addAction(self.issueAction) # updateAction self.updateAction = QAction(QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Check for newer version'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Check for newer release'), triggered=self.newUpdate) helpMenu.addAction(self.updateAction) # logAction self.logAction = QAction(QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Show log file'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Help'), triggered=self.showLog) helpMenu.addAction(self.logAction) # helpAction self.helpAction = QAction(QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Help'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Help'), triggered=self.persepolisHelp) helpMenu.addAction(self.helpAction) self.persepolis_setting.endGroup() self.qmenu = MenuWidget(self) self.toolBar2.addWidget(self.qmenu) # labels self.queue_panel_show_button.setText(QCoreApplication.translate("mainwindow_ui_tr", "Hide options")) self.start_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "Start Time")) self.end_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "End Time")) self.reverse_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "Download bottom of\n the list first")) self.limit_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "Limit Speed")) self.limit_comboBox.setItemText(0, "KiB/s") self.limit_comboBox.setItemText(1, "MiB/s") self.limit_pushButton.setText(QCoreApplication.translate("mainwindow_ui_tr", "Apply")) self.after_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "After download")) self.after_comboBox.setItemText(0, QCoreApplication.translate("mainwindow_ui_tr", "Shut Down")) self.keep_awake_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "Keep system awake!")) self.keep_awake_checkBox.setToolTip( QCoreApplication.translate("mainwindow_ui_tr", "<html><head/><body><p>This option is preventing system from going to sleep.\ This is necessary if your power manager is suspending system automatically. </p></body></html>")) self.after_pushButton.setText(QCoreApplication.translate("mainwindow_ui_tr", "Apply")) self.muxing_pushButton.setText(QCoreApplication.translate("mainwindow_ui_tr", "start muxing")) self.video_label.setText(QCoreApplication.translate("mainwindow_ui_tr", "<b>Video file status: </b>")) self.audio_label.setText(QCoreApplication.translate("mainwindow_ui_tr", "<b>Audio file status: </b>")) self.video_finder_status_label.setText(QCoreApplication.translate("mainwindow_ui_tr", "<b>Status: </b>")) self.muxing_status_label.setText(QCoreApplication.translate("mainwindow_ui_tr", "<b>Muxing status: </b>"))
class Window(QWidget): def __init__(self): super(Window, self).__init__() self.createSpinBoxes() self.createDateTimeEdits() self.createDoubleSpinBoxes() layout = QHBoxLayout() layout.addWidget(self.spinBoxesGroup) layout.addWidget(self.editsGroup) layout.addWidget(self.doubleSpinBoxesGroup) self.setLayout(layout) self.setWindowTitle("Spin Boxes") def createSpinBoxes(self): self.spinBoxesGroup = QGroupBox("Spinboxes") integerLabel = QLabel("Enter a value between %d and %d:" % (-20, 20)) integerSpinBox = QSpinBox() integerSpinBox.setRange(-20, 20) integerSpinBox.setSingleStep(1) integerSpinBox.setValue(0) zoomLabel = QLabel("Enter a zoom value between %d and %d:" % (0, 1000)) zoomSpinBox = QSpinBox() zoomSpinBox.setRange(0, 1000) zoomSpinBox.setSingleStep(10) zoomSpinBox.setSuffix('%') zoomSpinBox.setSpecialValueText("Automatic") zoomSpinBox.setValue(100) priceLabel = QLabel("Enter a price between %d and %d:" % (0, 999)) priceSpinBox = QSpinBox() priceSpinBox.setRange(0, 999) priceSpinBox.setSingleStep(1) priceSpinBox.setPrefix('$') priceSpinBox.setValue(99) spinBoxLayout = QVBoxLayout() spinBoxLayout.addWidget(integerLabel) spinBoxLayout.addWidget(integerSpinBox) spinBoxLayout.addWidget(zoomLabel) spinBoxLayout.addWidget(zoomSpinBox) spinBoxLayout.addWidget(priceLabel) spinBoxLayout.addWidget(priceSpinBox) self.spinBoxesGroup.setLayout(spinBoxLayout) def createDateTimeEdits(self): self.editsGroup = QGroupBox("Date and time spin boxes") dateLabel = QLabel() dateEdit = QDateEdit(QDate.currentDate()) dateEdit.setDateRange(QDate(2005, 1, 1), QDate(2010, 12, 31)) dateLabel.setText("Appointment date (between %s and %s):" % (dateEdit.minimumDate().toString(Qt.ISODate), dateEdit.maximumDate().toString(Qt.ISODate))) timeLabel = QLabel() timeEdit = QTimeEdit(QTime.currentTime()) timeEdit.setTimeRange(QTime(9, 0, 0, 0), QTime(16, 30, 0, 0)) timeLabel.setText("Appointment time (between %s and %s):" % (timeEdit.minimumTime().toString(Qt.ISODate), timeEdit.maximumTime().toString(Qt.ISODate))) self.meetingLabel = QLabel() self.meetingEdit = QDateTimeEdit(QDateTime.currentDateTime()) formatLabel = QLabel("Format string for the meeting date and time:") formatComboBox = QComboBox() formatComboBox.addItem('yyyy-MM-dd hh:mm:ss (zzz \'ms\')') formatComboBox.addItem('hh:mm:ss MM/dd/yyyy') formatComboBox.addItem('hh:mm:ss dd/MM/yyyy') formatComboBox.addItem('hh:mm:ss') formatComboBox.addItem('hh:mm ap') formatComboBox.activated[str].connect(self.setFormatString) self.setFormatString(formatComboBox.currentText()) editsLayout = QVBoxLayout() editsLayout.addWidget(dateLabel) editsLayout.addWidget(dateEdit) editsLayout.addWidget(timeLabel) editsLayout.addWidget(timeEdit) editsLayout.addWidget(self.meetingLabel) editsLayout.addWidget(self.meetingEdit) editsLayout.addWidget(formatLabel) editsLayout.addWidget(formatComboBox) self.editsGroup.setLayout(editsLayout) def setFormatString(self, formatString): self.meetingEdit.setDisplayFormat(formatString) if self.meetingEdit.displayedSections() & QDateTimeEdit.DateSections_Mask: self.meetingEdit.setDateRange(QDate(2004, 11, 1), QDate(2005, 11, 30)) self.meetingLabel.setText("Meeting date (between %s and %s):" % (self.meetingEdit.minimumDate().toString(Qt.ISODate), self.meetingEdit.maximumDate().toString(Qt.ISODate))) else: self.meetingEdit.setTimeRange(QTime(0, 7, 20, 0), QTime(21, 0, 0, 0)) self.meetingLabel.setText("Meeting time (between %s and %s):" % (self.meetingEdit.minimumTime().toString(Qt.ISODate), self.meetingEdit.maximumTime().toString(Qt.ISODate))) def createDoubleSpinBoxes(self): self.doubleSpinBoxesGroup = QGroupBox("Double precision spinboxes") precisionLabel = QLabel("Number of decimal places to show:") precisionSpinBox = QSpinBox() precisionSpinBox.setRange(0, 100) precisionSpinBox.setValue(2) doubleLabel = QLabel("Enter a value between %d and %d:" % (-20, 20)) self.doubleSpinBox = QDoubleSpinBox() self.doubleSpinBox.setRange(-20.0, 20.0) self.doubleSpinBox.setSingleStep(1.0) self.doubleSpinBox.setValue(0.0) scaleLabel = QLabel("Enter a scale factor between %d and %d:" % (0, 1000)) self.scaleSpinBox = QDoubleSpinBox() self.scaleSpinBox.setRange(0.0, 1000.0) self.scaleSpinBox.setSingleStep(10.0) self.scaleSpinBox.setSuffix('%') self.scaleSpinBox.setSpecialValueText("No scaling") self.scaleSpinBox.setValue(100.0) priceLabel = QLabel("Enter a price between %d and %d:" % (0, 1000)) self.priceSpinBox = QDoubleSpinBox() self.priceSpinBox.setRange(0.0, 1000.0) self.priceSpinBox.setSingleStep(1.0) self.priceSpinBox.setPrefix('$') self.priceSpinBox.setValue(99.99) precisionSpinBox.valueChanged.connect(self.changePrecision) spinBoxLayout = QVBoxLayout() spinBoxLayout.addWidget(precisionLabel) spinBoxLayout.addWidget(precisionSpinBox) spinBoxLayout.addWidget(doubleLabel) spinBoxLayout.addWidget(self.doubleSpinBox) spinBoxLayout.addWidget(scaleLabel) spinBoxLayout.addWidget(self.scaleSpinBox) spinBoxLayout.addWidget(priceLabel) spinBoxLayout.addWidget(self.priceSpinBox) self.doubleSpinBoxesGroup.setLayout(spinBoxLayout) def changePrecision(self, decimals): self.doubleSpinBox.setDecimals(decimals) self.scaleSpinBox.setDecimals(decimals) self.priceSpinBox.setDecimals(decimals)
class BRFManager(myqt.QFrameLayout): sig_brfperiod_changed = QSignal(list) def __init__(self, wldset=None, parent=None): super(BRFManager, self).__init__(parent) self.viewer = BRFViewer(wldset, parent) self.kgs_brf_installer = None self.__initGUI__() def __initGUI__(self): self.setContentsMargins(10, 10, 10, 10) # ---- Detrend and Correct Options self.baro_spinbox = myqt.QDoubleSpinBox(100, 0, show_buttons=True) self.baro_spinbox.setRange(0, 9999) self.baro_spinbox.setKeyboardTracking(True) self.earthtides_spinbox = myqt.QDoubleSpinBox( 100, 0, show_buttons=True) self.earthtides_spinbox.setRange(0, 9999) self.earthtides_spinbox.setKeyboardTracking(True) self.earthtides_cbox = QCheckBox('Nbr of ET lags :') self.earthtides_cbox.setChecked(True) self.earthtides_cbox.stateChanged.connect( lambda: self.earthtides_spinbox.setEnabled( self.earthtides_cbox.isChecked())) self.detrend_waterlevels_cbox = QCheckBox('Detrend water levels') self.detrend_waterlevels_cbox.setChecked(True) # Setup options layout. options_layout = QGridLayout() options_layout.addWidget(QLabel('Nbr of BP lags :'), 0, 0) options_layout.addWidget(self.baro_spinbox, 0, 2) options_layout.addWidget(self.earthtides_cbox, 1, 0) options_layout.addWidget(self.earthtides_spinbox, 1, 2) options_layout.addWidget(self.detrend_waterlevels_cbox, 2, 0, 1, 3) options_layout.setColumnStretch(1, 100) options_layout.setContentsMargins(0, 0, 0, 0) # ---- BRF date range self.date_start_edit = QDateTimeEdit() self.date_start_edit.setCalendarPopup(True) self.date_start_edit.setDisplayFormat('dd/MM/yyyy hh:mm') self.date_start_edit.dateChanged.connect( lambda: self.sig_brfperiod_changed.emit(self.get_brfperiod())) self.date_start_edit.dateChanged.connect( lambda: self.wldset.save_brfperiod(self.get_brfperiod())) self.date_end_edit = QDateTimeEdit() self.date_end_edit.setCalendarPopup(True) self.date_end_edit.setDisplayFormat('dd/MM/yyyy hh:mm') self.date_end_edit.dateChanged.connect( lambda: self.sig_brfperiod_changed.emit(self.get_brfperiod())) self.date_end_edit.dateChanged.connect( lambda: self.wldset.save_brfperiod(self.get_brfperiod())) self.btn_seldata = OnOffToolButton('select_range', size='small') self.btn_seldata.setToolTip("Select a BRF calculation period with " "the mouse cursor on the graph.") # Setup BRF date range layout. daterange_layout = QGridLayout() daterange_layout.addWidget(QLabel('BRF Start :'), 0, 0) daterange_layout.addWidget(self.date_start_edit, 0, 2) daterange_layout.addWidget(QLabel('BRF End :'), 1, 0) daterange_layout.addWidget(self.date_end_edit, 1, 2) daterange_layout.setColumnStretch(1, 100) daterange_layout.setContentsMargins(0, 0, 0, 0) seldata_layout = QGridLayout() seldata_layout.addWidget(self.btn_seldata, 0, 0) seldata_layout.setRowStretch(1, 100) seldata_layout.setContentsMargins(0, 0, 0, 0) # ---- Toolbar btn_comp = QPushButton('Compute BRF') btn_comp.clicked.connect(self.calc_brf) btn_comp.setFocusPolicy(Qt.NoFocus) self.btn_show = QToolButtonSmall(icons.get_icon('search')) self.btn_show.clicked.connect(self.viewer.show) # ---- Main Layout self.addLayout(daterange_layout, 0, 0) self.addLayout(seldata_layout, 0, 1) self.setRowMinimumHeight(1, 15) self.addLayout(options_layout, 2, 0) self.setRowMinimumHeight(3, 15) self.setRowStretch(3, 100) self.addWidget(btn_comp, 4, 0) self.addWidget(self.btn_show, 4, 1) self.setColumnStretch(0, 100) # ---- Install Panel if not KGSBRFInstaller().kgsbrf_is_installed(): self.__install_kgs_brf_installer() # ---- Properties @property def nlag_baro(self): """Return the number of lags to use for barometric correction.""" return self.baro_spinbox.value() @property def nlag_earthtides(self): """Return the number of lags to use for Earth tides correction.""" return (self.earthtides_spinbox.value() if self.earthtides_cbox.isChecked() else -1) @property def detrend_waterlevels(self): return self.detrend_waterlevels_cbox.isChecked() @property def correct_waterlevels(self): return True def get_brfperiod(self): """ Get the period over which the BRF would be evaluated as a list of two numerical Excel date values. """ year, month, day = self.date_start_edit.date().getDate() hour = self.date_start_edit.time().hour() minute = self.date_start_edit.time().minute() dstart = xldate_from_datetime_tuple( (year, month, day, hour, minute, 0), 0) year, month, day = self.date_end_edit.date().getDate() hour = self.date_end_edit.time().hour() minute = self.date_end_edit.time().minute() dend = xldate_from_datetime_tuple( (year, month, day, hour, minute, 0), 0) return [dstart, dend] def set_brfperiod(self, period): """ Set the value of the date_start_edit and date_end_edit widgets used to define the period over which the BRF is evaluated. Also save the period to the waterlevel dataset. """ period = np.sort(period).tolist() widgets = (self.date_start_edit, self.date_end_edit) for xldate, widget in zip(period, widgets): if xldate is not None: widget.blockSignals(True) widget.setDateTime(qdatetime_from_xldate(xldate)) widget.blockSignals(False) self.wldset.save_brfperiod(period) # ---- KGS BRF installer def __install_kgs_brf_installer(self): """ Installs a KGSBRFInstaller that overlays the whole brf tool layout until the KGS_BRF program is installed correctly. """ self.kgs_brf_installer = KGSBRFInstaller() self.kgs_brf_installer.sig_kgs_brf_installed.connect( self.__uninstall_kgs_brf_installer) self.addWidget(self.kgs_brf_installer, 0, 0, self.rowCount(), self.columnCount()) def __uninstall_kgs_brf_installer(self): """ Uninstall the KGSBRFInstaller after the KGS_BRF program has been installed properly. """ self.kgs_brf_installer.sig_kgs_brf_installed.disconnect() self.kgs_brf_installer = None def set_wldset(self, wldset): """Set the namespace for the wldset in the widget.""" self.wldset = wldset self.viewer.set_wldset(wldset) self.btn_seldata.setAutoRaise(True) self.setEnabled(wldset is not None) if wldset is not None: xldates = self.wldset.xldates self.set_daterange((xldates[0], xldates[-1])) # Set the period over which the BRF would be evaluated. saved_brfperiod = wldset.get_brfperiod() self.set_brfperiod((saved_brfperiod[0] or np.floor(xldates[0]), saved_brfperiod[1] or np.floor(xldates[-1]))) def set_daterange(self, daterange): """ Set the minimum and maximum value of date_start_edit and date_end_edit widgets from the specified list of Excel numeric dates. """ for widget in (self.date_start_edit, self.date_end_edit): widget.blockSignals(True) widget.setMinimumDateTime(qdatetime_from_xldate(daterange[0])) widget.setMaximumDateTime(qdatetime_from_xldate(daterange[1])) widget.blockSignals(False) def calc_brf(self): """Prepare the data, calcul the brf, and save and plot the results.""" # Prepare the datasets. well = self.wldset['Well'] brfperiod = self.get_brfperiod() t1 = min(brfperiod) i1 = np.where(self.wldset.xldates >= t1)[0][0] t2 = max(brfperiod) i2 = np.where(self.wldset.xldates <= t2)[0][-1] time = np.copy(self.wldset.xldates[i1:i2+1]) wl = np.copy(self.wldset['WL'][i1:i2+1]) bp = np.copy(self.wldset['BP'][i1:i2+1]) if len(bp) == 0: msg = ("The barometric response function cannot be computed" " because the currently selected water level dataset does" " not contain any barometric data for the selected period.") QMessageBox.warning(self, 'Warning', msg, QMessageBox.Ok) return et = np.copy(self.wldset['ET'][i1:i2+1]) if len(et) == 0: et = np.zeros(len(wl)) # Fill the gaps in the waterlevel data. dt = np.min(np.diff(time)) tc = np.arange(t1, t2+dt/2, dt) if len(tc) != len(time) or np.any(np.isnan(wl)): print('Filling gaps in data with linear interpolation.') indx = np.where(~np.isnan(wl))[0] wl = np.interp(tc, time[indx], wl[indx]) indx = np.where(~np.isnan(bp))[0] bp = np.interp(tc, time[indx], bp[indx]) indx = np.where(~np.isnan(et))[0] et = np.interp(tc, time[indx], et[indx]) time = tc QApplication.setOverrideCursor(Qt.WaitCursor) print('calculating the BRF') bm.produce_BRFInputtxt(well, time, wl, bp, et) msg = ("Not enough data. Try enlarging the selected period " "or reduce the number of BP lags.") if self.nlag_baro >= len(time) or self.nlag_earthtides >= len(time): QApplication.restoreOverrideCursor() QMessageBox.warning(self, 'Warning', msg, QMessageBox.Ok) return bm.produce_par_file( self.nlag_baro, self.nlag_earthtides, self.detrend_waterlevels, self.correct_waterlevels) bm.run_kgsbrf() try: dataf = bm.read_brf_output() date_start, date_end = (xldate_as_datetime(xldate, 0) for xldate in self.get_brfperiod()) self.wldset.save_brf(dataf, date_start, date_end, self.detrend_waterlevels) self.viewer.new_brf_added() self.viewer.show() QApplication.restoreOverrideCursor() except Exception: QApplication.restoreOverrideCursor() QMessageBox.warning(self, 'Warning', msg, QMessageBox.Ok) return
class AddLinkWindow_Ui(QWidget): def __init__(self, persepolis_setting): super().__init__() self.persepolis_setting = persepolis_setting # get icons name icons = ':/' + \ str(self.persepolis_setting.value('settings/icons')) + '/' self.setMinimumSize(QtCore.QSize(520, 265)) self.setWindowIcon(QIcon.fromTheme('persepolis', QIcon(':/persepolis.svg'))) window_verticalLayout = QVBoxLayout() window_verticalLayout.setContentsMargins(-1, 10, -1, -1) self.link_frame = QFrame(self) self.link_frame.setFrameShape(QFrame.StyledPanel) self.link_frame.setFrameShadow(QFrame.Raised) horizontalLayout_2 = QHBoxLayout(self.link_frame) link_verticalLayout = QVBoxLayout() # link -> link_horizontalLayout = QHBoxLayout() self.link_label = QLabel(self.link_frame) link_horizontalLayout.addWidget(self.link_label) self.link_lineEdit = QLineEdit(self.link_frame) link_horizontalLayout.addWidget(self.link_lineEdit) link_verticalLayout.addLayout(link_horizontalLayout) horizontalLayout_2.addLayout(link_verticalLayout) window_verticalLayout.addWidget(self.link_frame) # add change_name field -> change_name_horizontalLayout = QHBoxLayout() self.change_name_checkBox = QCheckBox(self.link_frame) change_name_horizontalLayout.addWidget(self.change_name_checkBox) self.change_name_lineEdit = QLineEdit(self.link_frame) change_name_horizontalLayout.addWidget(self.change_name_lineEdit) link_verticalLayout.addLayout(change_name_horizontalLayout) # add_category -> queue_horizontalLayout = QHBoxLayout() self.queue_frame = QFrame(self) self.queue_frame.setFrameShape(QFrame.StyledPanel) self.queue_frame.setFrameShadow(QFrame.Raised) add_queue_horizontalLayout = QHBoxLayout(self.queue_frame) self.add_queue_label = QLabel(self.queue_frame) add_queue_horizontalLayout.addWidget(self.add_queue_label) self.add_queue_comboBox = QComboBox(self.queue_frame) add_queue_horizontalLayout.addWidget(self.add_queue_comboBox) queue_horizontalLayout.addWidget(self.queue_frame) queue_horizontalLayout.addStretch(1) self.size_label = QLabel(self) queue_horizontalLayout.addWidget(self.size_label) window_verticalLayout.addLayout(queue_horizontalLayout) # options_pushButton options_horizontalLayout = QHBoxLayout() self.options_pushButton = QPushButton(self) self.options_pushButton.setFlat(True) options_horizontalLayout.addWidget(self.options_pushButton) options_horizontalLayout.addStretch(1) window_verticalLayout.addLayout(options_horizontalLayout) # proxy -> proxy_verticalLayout = QVBoxLayout() proxy_horizontalLayout = QHBoxLayout() self.proxy_checkBox = QCheckBox(self) self.detect_proxy_pushButton = QPushButton(self) self.detect_proxy_label = QLabel(self) proxy_horizontalLayout.addWidget(self.proxy_checkBox) proxy_horizontalLayout.addWidget(self.detect_proxy_label) proxy_horizontalLayout.addWidget(self.detect_proxy_pushButton) proxy_verticalLayout.addLayout(proxy_horizontalLayout) self.proxy_frame = QFrame(self) self.proxy_frame.setFrameShape(QFrame.StyledPanel) self.proxy_frame.setFrameShadow(QFrame.Raised) gridLayout = QGridLayout(self.proxy_frame) self.ip_lineEdit = QLineEdit(self.proxy_frame) self.ip_lineEdit.setInputMethodHints(QtCore.Qt.ImhNone) gridLayout.addWidget(self.ip_lineEdit, 0, 1, 1, 1) self.proxy_pass_label = QLabel(self.proxy_frame) gridLayout.addWidget(self.proxy_pass_label, 2, 2, 1, 1) self.proxy_pass_lineEdit = QLineEdit(self.proxy_frame) self.proxy_pass_lineEdit.setEchoMode(QLineEdit.Password) gridLayout.addWidget(self.proxy_pass_lineEdit, 2, 3, 1, 1) self.ip_label = QLabel(self.proxy_frame) gridLayout.addWidget(self.ip_label, 0, 0, 1, 1) self.proxy_user_lineEdit = QLineEdit(self.proxy_frame) gridLayout.addWidget(self.proxy_user_lineEdit, 0, 3, 1, 1) self.proxy_user_label = QLabel(self.proxy_frame) gridLayout.addWidget(self.proxy_user_label, 0, 2, 1, 1) self.port_label = QLabel(self.proxy_frame) gridLayout.addWidget(self.port_label, 2, 0, 1, 1) self.port_spinBox = QSpinBox(self.proxy_frame) self.port_spinBox.setMaximum(65535) self.port_spinBox.setSingleStep(1) gridLayout.addWidget(self.port_spinBox, 2, 1, 1, 1) proxy_verticalLayout.addWidget(self.proxy_frame) window_verticalLayout.addLayout(proxy_verticalLayout) # download UserName & Password -> download_horizontalLayout = QHBoxLayout() download_horizontalLayout.setContentsMargins(-1, 10, -1, -1) download_verticalLayout = QVBoxLayout() self.download_checkBox = QCheckBox(self) download_verticalLayout.addWidget(self.download_checkBox) self.download_frame = QFrame(self) self.download_frame.setFrameShape(QFrame.StyledPanel) self.download_frame.setFrameShadow(QFrame.Raised) gridLayout_2 = QGridLayout(self.download_frame) self.download_user_lineEdit = QLineEdit(self.download_frame) gridLayout_2.addWidget(self.download_user_lineEdit, 0, 1, 1, 1) self.download_user_label = QLabel(self.download_frame) gridLayout_2.addWidget(self.download_user_label, 0, 0, 1, 1) self.download_pass_label = QLabel(self.download_frame) gridLayout_2.addWidget(self.download_pass_label, 1, 0, 1, 1) self.download_pass_lineEdit = QLineEdit(self.download_frame) self.download_pass_lineEdit.setEchoMode(QLineEdit.Password) gridLayout_2.addWidget(self.download_pass_lineEdit, 1, 1, 1, 1) download_verticalLayout.addWidget(self.download_frame) download_horizontalLayout.addLayout(download_verticalLayout) # select folder -> self.folder_frame = QFrame(self) self.folder_frame.setFrameShape(QFrame.StyledPanel) self.folder_frame.setFrameShadow(QFrame.Raised) gridLayout_3 = QGridLayout(self.folder_frame) self.download_folder_lineEdit = QLineEdit(self.folder_frame) gridLayout_3.addWidget(self.download_folder_lineEdit, 2, 0, 1, 1) self.folder_pushButton = QPushButton(self.folder_frame) gridLayout_3.addWidget(self.folder_pushButton, 3, 0, 1, 1) self.folder_pushButton.setIcon(QIcon(icons + 'folder')) self.folder_label = QLabel(self.folder_frame) self.folder_label.setAlignment(QtCore.Qt.AlignCenter) gridLayout_3.addWidget(self.folder_label, 1, 0, 1, 1) download_horizontalLayout.addWidget(self.folder_frame) window_verticalLayout.addLayout(download_horizontalLayout) # start time -> time_limit_horizontalLayout = QHBoxLayout() time_limit_horizontalLayout.setContentsMargins(-1, 10, -1, -1) start_verticalLayout = QVBoxLayout() self.start_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.start_checkBox) self.start_frame = QFrame(self) self.start_frame.setFrameShape(QFrame.StyledPanel) self.start_frame.setFrameShadow(QFrame.Raised) horizontalLayout_5 = QHBoxLayout(self.start_frame) self.start_time_qDataTimeEdit = QDateTimeEdit(self.start_frame) self.start_time_qDataTimeEdit.setDisplayFormat('H:mm') horizontalLayout_5.addWidget(self.start_time_qDataTimeEdit) start_verticalLayout.addWidget(self.start_frame) time_limit_horizontalLayout.addLayout(start_verticalLayout) # end time -> end_verticalLayout = QVBoxLayout() self.end_checkBox = QCheckBox(self) end_verticalLayout.addWidget(self.end_checkBox) self.end_frame = QFrame(self) self.end_frame.setFrameShape(QFrame.StyledPanel) self.end_frame.setFrameShadow(QFrame.Raised) horizontalLayout_6 = QHBoxLayout(self.end_frame) self.end_time_qDateTimeEdit = QDateTimeEdit(self.end_frame) self.end_time_qDateTimeEdit.setDisplayFormat('H:mm') horizontalLayout_6.addWidget(self.end_time_qDateTimeEdit) end_verticalLayout.addWidget(self.end_frame) time_limit_horizontalLayout.addLayout(end_verticalLayout) # limit Speed -> limit_verticalLayout = QVBoxLayout() self.limit_checkBox = QCheckBox(self) limit_verticalLayout.addWidget(self.limit_checkBox) self.limit_frame = QFrame(self) self.limit_frame.setFrameShape(QFrame.StyledPanel) self.limit_frame.setFrameShadow(QFrame.Raised) horizontalLayout_4 = QHBoxLayout(self.limit_frame) self.limit_spinBox = QDoubleSpinBox(self.limit_frame) self.limit_spinBox.setMinimum(1) self.limit_spinBox.setMaximum(1023) horizontalLayout_4.addWidget(self.limit_spinBox) self.limit_comboBox = QComboBox(self.limit_frame) self.limit_comboBox.addItem("") self.limit_comboBox.addItem("") horizontalLayout_4.addWidget(self.limit_comboBox) limit_verticalLayout.addWidget(self.limit_frame) time_limit_horizontalLayout.addLayout(limit_verticalLayout) window_verticalLayout.addLayout(time_limit_horizontalLayout) # number of connections -> connections_horizontalLayout = QHBoxLayout() connections_horizontalLayout.setContentsMargins(-1, 10, -1, -1) self.connections_frame = QFrame(self) self.connections_frame.setFrameShape(QFrame.StyledPanel) self.connections_frame.setFrameShadow(QFrame.Raised) horizontalLayout_3 = QHBoxLayout(self.connections_frame) self.connections_label = QLabel(self.connections_frame) horizontalLayout_3.addWidget(self.connections_label) self.connections_spinBox = QSpinBox(self.connections_frame) self.connections_spinBox.setMinimum(1) self.connections_spinBox.setMaximum(16) self.connections_spinBox.setProperty("value", 16) horizontalLayout_3.addWidget(self.connections_spinBox) connections_horizontalLayout.addWidget(self.connections_frame) connections_horizontalLayout.addStretch(1) window_verticalLayout.addLayout(connections_horizontalLayout) # ok cancel download_later buttons -> buttons_horizontalLayout = QHBoxLayout() buttons_horizontalLayout.addStretch(1) self.download_later_pushButton = QPushButton(self) self.download_later_pushButton.setIcon(QIcon(icons + 'stop')) self.cancel_pushButton = QPushButton(self) self.cancel_pushButton.setIcon(QIcon(icons + 'remove')) self.ok_pushButton = QPushButton(self) self.ok_pushButton.setIcon(QIcon(icons + 'ok')) buttons_horizontalLayout.addWidget(self.download_later_pushButton) buttons_horizontalLayout.addWidget(self.cancel_pushButton) buttons_horizontalLayout.addWidget(self.ok_pushButton) window_verticalLayout.addLayout(buttons_horizontalLayout) self.setLayout(window_verticalLayout) # labels -> self.setWindowTitle("Enter Your Link") self.link_label.setText("Download Link : ") self.add_queue_label.setText("Add to category : ") self.change_name_checkBox.setText("Change File Name : ") self.options_pushButton.setText("Show more options") self.detect_proxy_pushButton.setText("Detect system proxy setting") self.proxy_checkBox.setText("Proxy") self.proxy_pass_label.setText("Proxy PassWord : "******"IP : ") self.proxy_user_label.setText("Proxy UserName : "******"Port:") self.download_checkBox.setText("Download UserName and PassWord") self.download_user_label.setText("Download UserName : "******"Download PassWord : "******"Change Download Folder") self.folder_label.setText("Download Folder : ") self.start_checkBox.setText("Start Time") self.end_checkBox.setText("End Time") self.limit_checkBox.setText("Limit Speed") self.limit_comboBox.setItemText(0, "KB/S") self.limit_comboBox.setItemText(1, "MB/S") self.connections_label.setText("Number Of Connections :") self.cancel_pushButton.setText("Cancel") self.ok_pushButton.setText("OK") self.download_later_pushButton.setText("Download later") def changeIcon(self, icons): icons = ':/' + str(icons) + '/' self.folder_pushButton.setIcon(QIcon(icons + 'folder')) self.download_later_pushButton.setIcon(QIcon(icons + 'stop')) self.cancel_pushButton.setIcon(QIcon(icons + 'remove')) self.ok_pushButton.setIcon(QIcon(icons + 'ok'))
class App(QWidget): def __init__(self): super().__init__() self.title = 'Nike bot' self.left = 600 self.top = 300 self.width = 670 self.height = 480 self.all_extensions = ["xlsx", "xlsm", "xlsb", "xls", "xlam"] self.browser = "firefox" self.my_threads = [] self.current_date = '' self.data = [] self.initUI() # req_proxy = RequestProxy() # self.proxies = req_proxy.get_proxy_list() # # self.rus_proxies = [] # for proxy in self.proxies: # if proxy.country == 'Russian Federation': # print(proxy.country) # self.rus_proxies.append(proxy) def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.setFixedSize(self.width, self.height) # Create widget label = QLabel(self) self.lable_file = QLabel(self) self.lable_file.setStyleSheet("background-color:red;") self.lable_file.setText("File is not uploaded") self.lable_file.setGeometry(470, 30, 135, 30) self.button_file = QPushButton(self) self.button_file.setStyleSheet( "background-color:#301b28;color:#ddc5a2;") self.button_file.setGeometry(470, 60, 135, 40) self.button_file.setText("Brows file") self.button_file.clicked.connect(lambda: self.openFileNameDialog()) self.button_start = QPushButton(self) self.button_start.setGeometry(470, 250, 135, 40) self.button_start.setText("Start") self.button_start.setStyleSheet( "background-color:#301b28;color:#ddc5a2;") self.button_start.clicked.connect( lambda: self.create_threads(self.browser, self.data)) self.button_start.setDisabled(True) self.button_close = QPushButton(self) self.button_close.setStyleSheet( "background-color:#301b28;color:#ddc5a2;") self.button_close.setGeometry(470, 290, 135, 40) self.button_close.setText("Close") self.button_close.clicked.connect(lambda: self.close_browsers()) self.label_brows = QLabel(self) self.label_brows.setGeometry(470, 120, 135, 30) self.label_brows.setStyleSheet("color:#301b28;") self.label_brows.setText("Choose browser:") self.combo = QComboBox(self) self.combo.addItems(["firefox", "chrome", "opera"]) self.combo.setGeometry(470, 150, 135, 40) self.combo.setStyleSheet("background-color:#301b28;color:#ddc5a2;") self.combo.activated[str].connect(self.setBrowser) self.table = QTableWidget(self) self.table.setGeometry(0, 0, 450, 400) self.table.setStyleSheet("background-color:#301b28;color:#ddc5a2;") self.table.setColumnCount(7) self.table.setRowCount(1) self.table.setItem(0, 0, QTableWidgetItem("Login")) self.table.setItem(0, 1, QTableWidgetItem("Password")) self.table.setItem(0, 2, QTableWidgetItem("Middle name")) self.table.setItem(0, 3, QTableWidgetItem("Card number")) self.table.setItem(0, 4, QTableWidgetItem("Date")) self.table.setItem(0, 5, QTableWidgetItem("Cvv")) self.table.setItem(0, 6, QTableWidgetItem("Url")) self.date_field = QDateTimeEdit(self) self.date_field.setGeometry(470, 350, 165, 40) self.date_field.setStyleSheet( "background-color:#301b28;color:#ddc5a2;") self.date_field.setDisplayFormat("yyyy-MM-dd HH:mm:ss") self.date_field.setMinimumDateTime(QDateTime.currentDateTime()) self.url = QTextEdit(self) self.url.setGeometry(10, 430, 400, 30) self.url.setStyleSheet("background-color:#301b28;color:#ddc5a2;") self.url_text = QLabel(self) self.url_text.setGeometry(10, 400, 400, 30) self.url_text.setStyleSheet("color:#301b28;") self.url_text.setText("Url:") self.button_url = QPushButton(self) self.button_url.setStyleSheet( "background-color:#301b28;color:#ddc5a2;") self.button_url.setGeometry(410, 430, 100, 30) self.button_url.setText("ADD") self.button_url.clicked.connect(lambda: self.add_url()) self.usr_text = QLabel(self) self.usr_text.setGeometry(520, 430, 80, 30) self.usr_text.setStyleSheet("color:#301b28;") self.usr_text.setText("User count:") self.users = QTextEdit(self) self.users.setGeometry(600, 430, 40, 30) self.users.setStyleSheet("background-color:#301b28;color:#ddc5a2;") pixmap = QPixmap('static/back.jpeg').scaled(self.width, self.height) label.setPixmap(pixmap) self.show() def openFileNameDialog(self): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getOpenFileName( self, "QFileDialog.getOpenFileName()", "", "", options=options) extension = fileName.split(".")[-1] if fileName and extension in self.all_extensions: self.start(fileName) else: msg = QMessageBox() msg.setIcon(QMessageBox.Critical) msg.setStyleSheet("background-color:#301b28;color:#ddc5a2;") msg.setText("Wrong file format!") msg.setInformativeText('Only excel file format') msg.setWindowTitle("Error") msg.exec_() def setBrowser(self, browser): self.browser = browser def start(self, name): self.lable_file.setStyleSheet("background-color:green;") self.lable_file.setText(" File is uploaded") self.data = pars_xls(name) if self.data != "Wrong header params, should be: Login, Password, Middle_name, Card_number, Date, Cvv": self.table.setRowCount(len(self.data)) self.user_count = len(self.data) - 1 self.users.setText(str(self.user_count)) self.fill_table() else: msg = QMessageBox() msg.setIcon(QMessageBox.Critical) msg.setStyleSheet("background-color:#301b28;color:#ddc5a2;") msg.setText("Wrong file format!") msg.setInformativeText( "Wrong header params, should be: Login, Password, Middle_name, Card_number, Date, Cvv" ) msg.setWindowTitle("Error") msg.exec_() def fill_table(self): self.table.setItem(0, 0, QTableWidgetItem("Login")) self.table.setItem(0, 1, QTableWidgetItem("Password")) self.table.setItem(0, 2, QTableWidgetItem("Middle name")) self.table.setItem(0, 3, QTableWidgetItem("Card number")) self.table.setItem(0, 4, QTableWidgetItem("Date")) self.table.setItem(0, 5, QTableWidgetItem("Cvv")) self.table.setItem(0, 6, QTableWidgetItem("Url")) for i in range(len(self.data) - 1): for j in range(len(self.data[i])): self.table.setItem(i + 1, j, QTableWidgetItem(self.data[i][j])) def create_threads(self, browser, data): self.button_start.setDisabled(True) k = len(self.my_threads) self.user_count = int(self.users.toPlainText()) drop_time = int( datetime.fromisoformat(self.date_field.dateTime().toString( "yyyy-MM-dd HH:mm:ss")).timestamp()) for i in data: # proxy = self.rus_proxies[k].get_address() self.my_threads.append( bot_on_thread(url=i[6], browser=browser, login=i[0], password=i[1], middle_name=i[2], cardNumber=i[3], cardExpiry=i[4], cardCvc=i[5], drop_time=drop_time)) self.my_threads[k].start() k += 1 if k == self.user_count: break def close_browsers(self): for i in self.my_threads: try: i.close_browser() except: del i continue del i self.my_threads = [] self.button_start.setDisabled(False) def add_url(self): if len(self.data) != 0: for i in range(len(self.data)): self.data[i].append(self.url.toPlainText()) self.table.setItem(i + 1, 6, QTableWidgetItem(self.url.toPlainText())) self.button_start.setDisabled(False) print(self.data)
class MainWindow_Ui(QMainWindow): def __init__(self, persepolis_setting): super().__init__() # MainWindow self.persepolis_setting = persepolis_setting # add support for other languages locale = str(self.persepolis_setting.value('settings/locale')) QLocale.setDefault(QLocale(locale)) self.translator = QTranslator() if self.translator.load(':/translations/locales/ui_' + locale, 'ts'): QCoreApplication.installTranslator(self.translator) # set ui direction ui_direction = self.persepolis_setting.value('ui_direction') if ui_direction == 'rtl': self.setLayoutDirection(Qt.RightToLeft) elif ui_direction in 'ltr': self.setLayoutDirection(Qt.LeftToRight) icons = ':/' + \ str(self.persepolis_setting.value('settings/icons')) + '/' self.setWindowTitle(QCoreApplication.translate("mainwindow_ui_tr", "Persepolis Download Manager")) self.setWindowIcon(QIcon.fromTheme('persepolis', QIcon(':/persepolis.svg'))) self.centralwidget = QWidget(self) self.verticalLayout = QVBoxLayout(self.centralwidget) # enable drag and drop self.setAcceptDrops(True) # frame self.frame = QFrame(self.centralwidget) # download_table_horizontalLayout download_table_horizontalLayout = QHBoxLayout() tabels_splitter = QSplitter(Qt.Horizontal) # category_tree self.category_tree_qwidget = QWidget(self) category_tree_verticalLayout = QVBoxLayout() self.category_tree = CategoryTreeView(self) category_tree_verticalLayout.addWidget(self.category_tree) self.category_tree_model = QStandardItemModel() self.category_tree.setModel(self.category_tree_model) category_table_header = [QCoreApplication.translate("mainwindow_ui_tr", 'Category')] self.category_tree_model.setHorizontalHeaderLabels( category_table_header) self.category_tree.header().setStretchLastSection(True) self.category_tree.header().setDefaultAlignment(Qt.AlignCenter) # queue_panel self.queue_panel_widget = QWidget(self) queue_panel_verticalLayout_main = QVBoxLayout(self.queue_panel_widget) # queue_panel_show_button self.queue_panel_show_button = QPushButton(self) queue_panel_verticalLayout_main.addWidget(self.queue_panel_show_button) # queue_panel_widget_frame self.queue_panel_widget_frame = QFrame(self) self.queue_panel_widget_frame.setFrameShape(QFrame.StyledPanel) self.queue_panel_widget_frame.setFrameShadow(QFrame.Raised) queue_panel_verticalLayout_main.addWidget( self.queue_panel_widget_frame) queue_panel_verticalLayout = QVBoxLayout(self.queue_panel_widget_frame) queue_panel_verticalLayout_main.setContentsMargins(50, -1, 50, -1) # start_end_frame self.start_end_frame = QFrame(self) # start time start_verticalLayout = QVBoxLayout(self.start_end_frame) self.start_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.start_checkBox) self.start_frame = QFrame(self) self.start_frame.setFrameShape(QFrame.StyledPanel) self.start_frame.setFrameShadow(QFrame.Raised) start_frame_verticalLayout = QVBoxLayout(self.start_frame) self.start_time_qDataTimeEdit = QDateTimeEdit(self.start_frame) self.start_time_qDataTimeEdit.setDisplayFormat('H:mm') start_frame_verticalLayout.addWidget(self.start_time_qDataTimeEdit) start_verticalLayout.addWidget(self.start_frame) # end time self.end_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.end_checkBox) self.end_frame = QFrame(self) self.end_frame.setFrameShape(QFrame.StyledPanel) self.end_frame.setFrameShadow(QFrame.Raised) end_frame_verticalLayout = QVBoxLayout(self.end_frame) self.end_time_qDateTimeEdit = QDateTimeEdit(self.end_frame) self.end_time_qDateTimeEdit.setDisplayFormat('H:mm') end_frame_verticalLayout.addWidget(self.end_time_qDateTimeEdit) start_verticalLayout.addWidget(self.end_frame) self.reverse_checkBox = QCheckBox(self) start_verticalLayout.addWidget(self.reverse_checkBox) queue_panel_verticalLayout.addWidget(self.start_end_frame) # limit_after_frame self.limit_after_frame = QFrame(self) # limit_checkBox limit_verticalLayout = QVBoxLayout(self.limit_after_frame) self.limit_checkBox = QCheckBox(self) limit_verticalLayout.addWidget(self.limit_checkBox) # limit_frame self.limit_frame = QFrame(self) self.limit_frame.setFrameShape(QFrame.StyledPanel) self.limit_frame.setFrameShadow(QFrame.Raised) limit_verticalLayout.addWidget(self.limit_frame) limit_frame_verticalLayout = QVBoxLayout(self.limit_frame) # limit_spinBox limit_frame_horizontalLayout = QHBoxLayout() self.limit_spinBox = QDoubleSpinBox(self) self.limit_spinBox.setMinimum(1) self.limit_spinBox.setMaximum(1023) limit_frame_horizontalLayout.addWidget(self.limit_spinBox) # limit_comboBox self.limit_comboBox = QComboBox(self) self.limit_comboBox.addItem("") self.limit_comboBox.addItem("") limit_frame_horizontalLayout.addWidget(self.limit_comboBox) limit_frame_verticalLayout.addLayout(limit_frame_horizontalLayout) # limit_pushButton self.limit_pushButton = QPushButton(self) limit_frame_verticalLayout.addWidget(self.limit_pushButton) # after_checkBox self.after_checkBox = QtWidgets.QCheckBox(self) limit_verticalLayout.addWidget(self.after_checkBox) # after_frame self.after_frame = QtWidgets.QFrame(self) self.after_frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.after_frame.setFrameShadow(QtWidgets.QFrame.Raised) limit_verticalLayout.addWidget(self.after_frame) after_frame_verticalLayout = QVBoxLayout(self.after_frame) # after_comboBox self.after_comboBox = QComboBox(self) self.after_comboBox.addItem("") after_frame_verticalLayout.addWidget(self.after_comboBox) # after_pushButton self.after_pushButton = QPushButton(self) after_frame_verticalLayout.addWidget(self.after_pushButton) queue_panel_verticalLayout.addWidget(self.limit_after_frame) category_tree_verticalLayout.addWidget(self.queue_panel_widget) # keep_awake_checkBox self.keep_awake_checkBox = QCheckBox(self) queue_panel_verticalLayout.addWidget(self.keep_awake_checkBox) self.category_tree_qwidget.setLayout(category_tree_verticalLayout) tabels_splitter.addWidget(self.category_tree_qwidget) # download table widget self.download_table_content_widget = QWidget(self) download_table_content_widget_verticalLayout = QVBoxLayout( self.download_table_content_widget) self.download_table = DownloadTableWidget(self) download_table_content_widget_verticalLayout.addWidget( self.download_table) tabels_splitter.addWidget(self.download_table_content_widget) self.download_table.setColumnCount(13) self.download_table.setSelectionBehavior(QAbstractItemView.SelectRows) self.download_table.setEditTriggers(QAbstractItemView.NoEditTriggers) self.download_table.verticalHeader().hide() # hide gid and download dictioanry section self.download_table.setColumnHidden(8, True) self.download_table.setColumnHidden(9, True) download_table_header = [QCoreApplication.translate("mainwindow_ui_tr", 'File Name'), QCoreApplication.translate("mainwindow_ui_tr",'Status'), QCoreApplication.translate("mainwindow_ui_tr", 'Size'), QCoreApplication.translate("mainwindow_ui_tr", 'Downloaded'), QCoreApplication.translate("mainwindow_ui_tr", 'Percentage'), QCoreApplication.translate("mainwindow_ui_tr", 'Connections'), QCoreApplication.translate("mainwindow_ui_tr", 'Transfer rate'), QCoreApplication.translate("mainwindow_ui_tr",'Estimated time left'), 'Gid', QCoreApplication.translate("mainwindow_ui_tr",'Link'), QCoreApplication.translate("mainwindow_ui_tr", 'First try date'), QCoreApplication.translate("mainwindow_ui_tr", 'Last try date'), QCoreApplication.translate("mainwindow_ui_tr",'Category')] self.download_table.setHorizontalHeaderLabels(download_table_header) # fixing the size of download_table when window is Maximized! self.download_table.horizontalHeader().setSectionResizeMode(0) self.download_table.horizontalHeader().setStretchLastSection(True) tabels_splitter.setStretchFactor(0, 3) # category_tree width tabels_splitter.setStretchFactor(1, 10) # ratio of tables's width download_table_horizontalLayout.addWidget(tabels_splitter) self.frame.setLayout(download_table_horizontalLayout) self.verticalLayout.addWidget(self.frame) self.setCentralWidget(self.centralwidget) # menubar self.menubar = QMenuBar(self) self.menubar.setGeometry(QRect(0, 0, 600, 24)) self.setMenuBar(self.menubar) fileMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&File')) editMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&Edit')) viewMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&View')) downloadMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&Download')) queueMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&Queue')) videoFinderMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", 'V&ideo Finder')) helpMenu = self.menubar.addMenu(QCoreApplication.translate("mainwindow_ui_tr", '&Help')) # viewMenu submenus sortMenu = viewMenu.addMenu(QCoreApplication.translate("mainwindow_ui_tr", 'Sort by')) # statusbar self.statusbar = QStatusBar(self) self.setStatusBar(self.statusbar) self.statusbar.showMessage(QCoreApplication.translate("mainwindow_ui_tr", "Persepolis Download Manager")) # toolBar self.toolBar2 = QToolBar(self) self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar2) self.toolBar2.setWindowTitle(QCoreApplication.translate("mainwindow_ui_tr", 'Menu')) self.toolBar2.setFloatable(False) self.toolBar2.setMovable(False) self.toolBar = QToolBar(self) self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.toolBar.setWindowTitle(QCoreApplication.translate("mainwindow_ui_tr", 'Toolbar')) self.toolBar.setFloatable(False) self.toolBar.setMovable(False) #toolBar and menubar and actions self.videoFinderAddLinkAction = QAction(QIcon(icons + 'video_finder'), QCoreApplication.translate("mainwindow_ui_tr", 'Find Video Links'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Download video or audio from Youtube, Vimeo, etc...'), triggered=self.showVideoFinderAddLinkWindow) QShortcut(QKeySequence('Ctrl+I'), self, self.showVideoFinderAddLinkWindow) videoFinderMenu.addAction(self.videoFinderAddLinkAction) self.stopAllAction = QAction(QIcon(icons + 'stop_all'), QCoreApplication.translate("mainwindow_ui_tr", 'Stop all active downloads'), self, statusTip='Stop all active downloads', triggered=self.stopAllDownloads) downloadMenu.addAction(self.stopAllAction) self.sort_file_name_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'File name'), self, triggered=self.sortByName) sortMenu.addAction(self.sort_file_name_Action) self.sort_file_size_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'File size'), self, triggered=self.sortBySize) sortMenu.addAction(self.sort_file_size_Action) self.sort_first_try_date_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'First try date'), self, triggered=self.sortByFirstTry) sortMenu.addAction(self.sort_first_try_date_Action) self.sort_last_try_date_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Last try date'), self, triggered=self.sortByLastTry) sortMenu.addAction(self.sort_last_try_date_Action) self.sort_download_status_Action = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Download status'), self, triggered=self.sortByStatus) sortMenu.addAction(self.sort_download_status_Action) self.trayAction = QAction(QCoreApplication.translate("mainwindow_ui_tr", 'Show system tray icon'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Show/Hide system tray icon"), triggered=self.showTray) self.trayAction.setCheckable(True) viewMenu.addAction(self.trayAction) self.showMenuBarAction = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Show menubar'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Show menubar'), triggered=self.showMenuBar) self.showMenuBarAction.setCheckable(True) viewMenu.addAction(self.showMenuBarAction) self.showSidePanelAction = QAction( QCoreApplication.translate("mainwindow_ui_tr", 'Show side panel'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Show side panel'), triggered=self.showSidePanel) self.showSidePanelAction.setCheckable(True) viewMenu.addAction(self.showSidePanelAction) self.minimizeAction = QAction(QIcon(icons + 'minimize'), QCoreApplication.translate("mainwindow_ui_tr", 'Minimize to system tray'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Minimize to system tray"), triggered=self.minMaxTray) QShortcut(QKeySequence('Ctrl+W'), self, self.minMaxTray) viewMenu.addAction(self.minimizeAction) self.addlinkAction = QAction(QIcon(icons + 'add'), QCoreApplication.translate("mainwindow_ui_tr", 'Add New Download Link'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Add New Download Link"), triggered=self.addLinkButtonPressed) QShortcut(QKeySequence('Ctrl+N'), self, self.addLinkButtonPressed) fileMenu.addAction(self.addlinkAction) self.addtextfileAction = QAction(QIcon(icons + 'file'), QCoreApplication.translate("mainwindow_ui_tr", 'Import links from text file'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Create a Text file and put links in it.line by line!'), triggered=self.importText) fileMenu.addAction(self.addtextfileAction) self.resumeAction = QAction(QIcon(icons + 'play'), QCoreApplication.translate("mainwindow_ui_tr", 'Resume Download'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Resume Download"), triggered=self.resumeButtonPressed) QShortcut(QKeySequence('Ctrl+R'), self, self.resumeButtonPressed) downloadMenu.addAction(self.resumeAction) self.pauseAction = QAction(QIcon(icons + 'pause'), QCoreApplication.translate("mainwindow_ui_tr", 'Pause Download'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Pause Download"), triggered=self.pauseButtonPressed) QShortcut(QKeySequence('Ctrl+C'), self, self.pauseButtonPressed) downloadMenu.addAction(self.pauseAction) self.stopAction = QAction(QIcon(icons + 'stop'), QCoreApplication.translate("mainwindow_ui_tr", 'Stop Download'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Stop/Cancel Download"), triggered=self.stopButtonPressed) QShortcut(QKeySequence('Ctrl+S'), self, self.stopButtonPressed) downloadMenu.addAction(self.stopAction) self.propertiesAction = QAction(QIcon(icons + 'setting'), QCoreApplication.translate("mainwindow_ui_tr", 'Properties'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Properties"), triggered=self.propertiesButtonPressed) QShortcut(QKeySequence('Ctrl+P'), self, self.propertiesButtonPressed) downloadMenu.addAction(self.propertiesAction) self.progressAction = QAction(QIcon(icons + 'window'), QCoreApplication.translate("mainwindow_ui_tr", 'Progress'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Progress"), triggered=self.progressButtonPressed) QShortcut(QKeySequence('Ctrl+Z'), self, self.progressButtonPressed) downloadMenu.addAction(self.progressAction) self.openFileAction = QAction(QIcon( icons + 'file'), QCoreApplication.translate("mainwindow_ui_tr", 'Open file'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Open file'), triggered=self.openFile) fileMenu.addAction(self.openFileAction) self.openDownloadFolderAction = QAction(QIcon( icons + 'folder'), QCoreApplication.translate("mainwindow_ui_tr", 'Open download folder'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Open download folder'), triggered=self.openDownloadFolder) fileMenu.addAction(self.openDownloadFolderAction) self.openDefaultDownloadFolderAction = QAction(QIcon( icons + 'folder'), QCoreApplication.translate("mainwindow_ui_tr", 'Open default download folder'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Open default download folder'), triggered=self.openDefaultDownloadFolder) fileMenu.addAction(self.openDefaultDownloadFolderAction) self.exitAction = QAction(QIcon(icons + 'exit'), QCoreApplication.translate("mainwindow_ui_tr", 'Exit'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", "Exit"), triggered=self.closeEvent) QShortcut(QKeySequence('Ctrl+Q'), self, self.closeEvent) fileMenu.addAction(self.exitAction) self.clearAction = QAction(QIcon(icons + 'multi_remove'), QCoreApplication.translate("mainwindow_ui_tr", 'Clear download list'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Clear all items in download list'), triggered=self.clearDownloadList) editMenu.addAction(self.clearAction) self.removeSelectedAction = QAction(QIcon(icons + 'remove'), QCoreApplication.translate("mainwindow_ui_tr", 'Remove selected downloads from list'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Remove selected downloads form list'), triggered=self.removeSelected) editMenu.addAction(self.removeSelectedAction) self.removeSelectedAction.setEnabled(False) self.deleteSelectedAction = QAction(QIcon(icons + 'trash'), QCoreApplication.translate("mainwindow_ui_tr", 'Delete selected download files'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Delete selected download files'), triggered=self.deleteSelected) editMenu.addAction(self.deleteSelectedAction) self.deleteSelectedAction.setEnabled(False) self.createQueueAction = QAction(QIcon(icons + 'add_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Create new queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Create new download queue'), triggered=self.createQueue) queueMenu.addAction(self.createQueueAction) self.removeQueueAction = QAction(QIcon(icons + 'remove_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Remove this queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Remove this queue'), triggered=self.removeQueue) queueMenu.addAction(self.removeQueueAction) self.startQueueAction = QAction(QIcon( icons + 'start_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Start this queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Start this queue'), triggered=self.startQueue) queueMenu.addAction(self.startQueueAction) self.stopQueueAction = QAction(QIcon( icons + 'stop_queue'), QCoreApplication.translate("mainwindow_ui_tr", 'Stop this queue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Stop this queue'), triggered=self.stopQueue) queueMenu.addAction(self.stopQueueAction) self.moveUpSelectedAction = QAction(QIcon(icons + 'multi_up'), QCoreApplication.translate("mainwindow_ui_tr", 'Move up selected items'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Move currently selected items up by one row'), triggered=self.moveUpSelected) queueMenu.addAction(self.moveUpSelectedAction) self.moveDownSelectedAction = QAction(QIcon(icons + 'multi_down'), QCoreApplication.translate("mainwindow_ui_tr", 'Move down selected items'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Move currently selected items down by one row'), triggered=self.moveDownSelected) queueMenu.addAction(self.moveDownSelectedAction) self.preferencesAction = QAction(QIcon(icons + 'preferences'), QCoreApplication.translate("mainwindow_ui_tr", 'Preferences'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Preferences'), triggered=self.openPreferences, menuRole=5) editMenu.addAction(self.preferencesAction) self.aboutAction = QAction(QIcon( icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'About'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'About'), triggered=self.openAbout, menuRole=4) helpMenu.addAction(self.aboutAction) self.issueAction = QAction(QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Report an issue'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Report an issue'), triggered=self.reportIssue) helpMenu.addAction(self.issueAction) self.updateAction = QAction(QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Check for newer version'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Check for newer release'), triggered=self.newUpdate) helpMenu.addAction(self.updateAction) self.logAction = QAction(QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Show log file'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Help'), triggered=self.showLog) helpMenu.addAction(self.logAction) self.helpAction = QAction(QIcon(icons + 'about'), QCoreApplication.translate("mainwindow_ui_tr", 'Help'), self, statusTip=QCoreApplication.translate("mainwindow_ui_tr", 'Help'), triggered=self.persepolisHelp) helpMenu.addAction(self.helpAction) self.qmenu = MenuWidget(self) self.toolBar2.addWidget(self.qmenu) # labels self.queue_panel_show_button.setText(QCoreApplication.translate("mainwindow_ui_tr", "Hide options")) self.start_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "Start Time")) self.end_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "End Time")) self.reverse_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "Download bottom of\n the list first")) self.limit_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "Limit Speed")) self.limit_comboBox.setItemText(0, "KiB/s") self.limit_comboBox.setItemText(1, "MiB/s") self.limit_pushButton.setText(QCoreApplication.translate("mainwindow_ui_tr", "Apply")) self.after_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "After download")) self.after_comboBox.setItemText(0, QCoreApplication.translate("mainwindow_ui_tr", "Shut Down")) self.keep_awake_checkBox.setText(QCoreApplication.translate("mainwindow_ui_tr", "Keep system awake!")) self.keep_awake_checkBox.setToolTip( QCoreApplication.translate("mainwindow_ui_tr", "<html><head/><body><p>This option is preventing system from going to sleep.\ This is necessary if your power manager is suspending system automatically. </p></body></html>")) self.after_pushButton.setText(QCoreApplication.translate("mainwindow_ui_tr", "Apply")) def changeIcon(self, icons): icons = ':/' + str(icons) + '/' action_icon_dict = {self.stopAllAction: 'stop_all', self.minimizeAction: 'minimize', self.addlinkAction: 'add', self.addtextfileAction: 'file', self.resumeAction: 'play', self.pauseAction: 'pause', self.stopAction: 'stop', self.propertiesAction: 'setting', self.progressAction: 'window', self.openFileAction: 'file', self.openDownloadFolderAction: 'folder', self.openDefaultDownloadFolderAction: 'folder', self.exitAction: 'exit', self.removeSelectedAction: 'multi_remove', self.deleteSelectedAction: 'multi_trash', self.createQueueAction: 'add_queue', self.removeQueueAction: 'remove_queue', self.startQueueAction: 'start_queue', self.stopQueueAction: 'stop_queue', self.preferencesAction: 'preferences', self.aboutAction: 'about', self.issueAction: 'about', self.updateAction: 'about', self.videoFinderAddLinkAction: 'video_finder', self.qmenu: 'menu'} for key in action_icon_dict.keys(): key.setIcon(QIcon(icons + str(action_icon_dict[key])))