def __init__(self): super().__init__() # load the ui file self.ui = QUiLoader().load('listview_manip.ui') # connect signals/slots self.ui.load_btn.clicked.connect(self.on_load_btn_click) # you can access form objects directly ... # self.ui.<name_of_object>.<some_method>() # or search for them ... # self.found_object = self.ui.findChild(QPlainTextEdit, 'plainTextEdit') # or setup shorter references #self.my_text = self.ui.plainTextEdit # Test data in a model self.users = ['User 1', 'User 2', 'User 3'] self.lv_model = QStringListModel() self.lv_model.setStringList(self.users) # # Attach the model and selection events self.ui.file_view.setModel(self.lv_model) self.ui.file_view.selectionModel().selectionChanged.connect( self.item_selected)
def __init__(self): WizardPage.__init__(self) self.fetch_config = None self.app_model = QStringListModel( REGISTRY.names( lambda klass: not getattr(klass, "disable_in_gui", None))) self.ui.app_combo.setModel(self.app_model) if mozinfo.bits == 64: if mozinfo.os == "mac": self.bits_model = QStringListModel(["64"]) bits_index = 0 else: self.bits_model = QStringListModel(["32", "64"]) bits_index = 1 elif mozinfo.bits == 32: self.bits_model = QStringListModel(["32"]) bits_index = 0 self.ui.bits_combo.setModel(self.bits_model) self.ui.bits_combo.setCurrentIndex(bits_index) self.build_type_model = QStringListModel() self.ui.app_combo.currentIndexChanged.connect(self._set_fetch_config) self.ui.bits_combo.currentIndexChanged.connect(self._set_fetch_config) self.ui.app_combo.setCurrentIndex( self.ui.app_combo.findText("firefox")) self.ui.repository.textChanged.connect(self._on_repo_changed) completer = QCompleter(sorted(get_branches()), self) completer.setCaseSensitivity(Qt.CaseInsensitive) self.ui.repository.setCompleter(completer) QApplication.instance().focusChanged.connect(self._on_focus_changed)
def getListNews(self): self.headlinesurl = "https://news.google.com/?hl=fr&gl=FR&ceid=FR:fr&output=rss" self.feed = feedparser.parse(self.headlinesurl) self.newslist = [post.title for post in self.feed.entries[1:6]] self.newsmodel = QStringListModel() self.newsmodel.setStringList(self.newslist) self.ctx.setContextProperty("newsmodel", self.newsmodel)
def __init__(self, record_id): super().__init__() self.record_id = record_id self.session = dbSession() # 获取答题总时间和当前题号 self.totaltime, self.current_v_question_id, self.max_num = self.load_data( ) # 使用答题已用时间初始化UI self.ui = Ui_Query(self.totaltime) self.option_model = QStringListModel() self.ui.question_panel.ui.listViewOptions.setModel(self.option_model) self.update_question() # 信号连接 self.ui.about_close.connect(self.quit_action) self.ui.question_panel.ui.pushButtonPrevious.clicked.connect( self.previous_question) self.ui.question_panel.ui.pushButtonPause.clicked.connect( self.toggle_pause_question) self.ui.question_panel.ui.pushButtonNext.clicked.connect( self.next_question) self.ui.question_panel.ui.pushButtonCommit.clicked.connect( self.commit_query) self.ui.question_panel.ui.listViewOptions.clicked.connect( self.choose_option) # TODO 能不能改进,当前index改变时 self.ui.note.textChanged.connect(self.update_note) self.ui.question_panel.ui.pushButtonChooseQuestion.clicked.connect( self.open_option_panel)
class CustomLineEdit(QLineEdit): mousePressed = QtCore.Property(QMouseEvent) tagSelected = QtCore.Signal(str) def __init__(self, parent): super(self.__class__, self).__init__() self.model = QStringListModel() self.setCompleter(QCompleter()) self.completer().setModel(self.model) self.completer().setCompletionMode(QCompleter.PopupCompletion) self.completer().activated.connect(self.selected) self.textEdited.connect(self.slot_text_edited) self.parent = parent self.setPlaceholderText("Type tags here") def slot_text_edited(self, text): self.completer().setCompletionMode( QCompleter.UnfilteredPopupCompletion if text == '' else QCompleter.PopupCompletion) def selected(self, txt): self.tagSelected.emit(txt) def set_list(self, qsl): self.model.setStringList(qsl) def mousePressEvent(self, e): self.completer().complete() def focusInEvent(self, e): self.completer().complete() def focusOutEvent(self, e): pass
def __init__(self): super(MainWindow, self).__init__() #ui self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.comboBox_dict.addItems(dicts) #signal self.ui.pushButton_create.clicked.connect(self.createBoard) self.ui.pushButton_save.clicked.connect(self.saveBoard) self.ui.pushButton_open.clicked.connect(self.OpenImages) self.ui.tableView.clicked.connect(self.showImg) #列表图片显示 self.ui.pushButton_calib.clicked.connect(self.calib) self.ui.pushButton_saveParameter.clicked.connect(self.saveParameter) self.ui.pushButton_output.clicked.connect(self.saveCameraGroup) self.ui.pushButton_clear.clicked.connect(self.clearGroup) self.ui.listView_Camera.clicked.connect(self.showCamera) #property self.model = QStandardItemModel() #tab 1 self.cameraListModel = QStringListModel() #tab 2 self.cameraLists = [] self.ui.listView_Camera.setModel(self.cameraListModel) self.caliber = None self.cameraGroup = CameraGroup.CameraGroup() #other self.calibBoard = CharucoBoard.ChessBoard() self.board = None self.boardType = 0
def testSignals(self): self._called = False m = QStringListModel() m.rowsAboutToBeInserted[QModelIndex, int, int].connect(self.sigCallback) m.insertRows(0, 3) self.assertTrue(self._called)
class VisualController(Controller): def __init__(self): super().__init__() self.results = QStringListModel(["Worker Results:"]) self.listview = QListView() self.listview.setModel(self.results) def start(self): super().start() self.listview.show() @Slot(int) def on_worker_result(self, result: int): super().on_worker_result(result) row_count = self.results.rowCount() assert self.results.insertRows(row_count, 1) new_row_idx = self.results.index(row_count, 0) self.results.setData(new_row_idx, str(result)) self._resize_to_fit_contents() def _resize_to_fit_contents(self): QApplication.processEvents() view_geo = self.listview.geometry() view_geo.setHeight( max(view_geo.height(), self.listview.contentsSize().height())) self.listview.setGeometry(view_geo)
class StringFilterWidget(AbstractFilterWidget): def __init__(self, field: str, parent=None): super().__init__(parent) self.field = field vlayout = QVBoxLayout() vlayout.setContentsMargins(0, 0, 0, 0) self.edit = QLineEdit() vlayout.addWidget(self.edit) self.setLayout(vlayout) self.completer = QCompleter() self.completer_model = QStringListModel() self.completer.setModel(self.completer_model) self.edit.setCompleter(self.completer) self.edit.textChanged.connect(self.changed) def setup(self, conn: sqlite3.Connection): self.completer_model.setStringList( sql.get_field_unique_values(conn, self.field)) def get_filters(self): name = self.field value = self.edit.text() if not value: return "" else: return {"field": name, "operator": "~", "value": value}
def __init__(self, items: list): super().__init__() self.stringListModel = QStringListModel() self.stringListModel.setStringList(items) self.setModel(self.stringListModel) self.setStyleSheet("font-size: 23px;") self.setSpacing(0) self.setEditTriggers(QAbstractItemView.NoEditTriggers)
def __init__(self, parent=None): QObject.__init__(self, parent) self.m_text = "" self.pictureModel = PictureModel() self.keywordModel = QStringListModel() self.selectedKeywordsModel = QStringListModel() self.pictures = None self.keywords = None self.folders = []
def open_config(): from .designer_wrapper import ConfigInvoker, QmlWrapper from PySide2.QtCore import QStringListModel paths = shared.config["default_input"] model = QStringListModel() model.setStringList(paths) configinvoker = ConfigInvoker(model) QmlWrapper.from_resource("Config", properties={"HP": configinvoker, "Paths": model})
def __init__(self, parent): super(self.__class__, self).__init__() self.model = QStringListModel() self.setCompleter(QCompleter()) self.completer().setModel(self.model) self.completer().setCompletionMode(QCompleter.PopupCompletion) self.completer().activated.connect(self.selected) self.textEdited.connect(self.slot_text_edited) self.parent = parent self.setPlaceholderText("Type tags here")
def __init__(self, field: str, parent=None): super().__init__(parent) self.field = field vlayout = QVBoxLayout() vlayout.setContentsMargins(0, 0, 0, 0) self.view = QListView() self.model = QStringListModel() self.view.setModel(self.model) vlayout.addWidget(self.view) self.setLayout(vlayout)
def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle(self.tr("Edit Word set")) self.setWindowIcon(QIcon(cm.DIR_ICONS + "app.png")) box = QVBoxLayout() self.add_button = QPushButton(self.tr("Add")) self.add_file_button = QPushButton(self.tr("Add from file...")) self.del_button = QPushButton(self.tr("Remove")) self.del_button.setDisabled(True) self.save_button = QPushButton(self.tr("Save")) self.save_button.setDisabled(True) self.cancel_button = QPushButton(self.tr("Cancel")) box.addWidget(self.add_button) box.addWidget(self.del_button) box.addWidget(self.add_file_button) box.addStretch() box.addWidget(self.save_button) box.addWidget(self.cancel_button) self.view = QListView() self.model = QStringListModel() self.view.setModel(self.model) self.view.setSelectionMode(QAbstractItemView.ExtendedSelection) vlayout = QVBoxLayout() # Create title label self.title_label = QLabel() self.title_label.setText(self.tr("Create a set by adding words")) vlayout.addWidget(self.title_label) vlayout.addWidget(self.view) hlayout = QHBoxLayout() hlayout.addLayout(vlayout) hlayout.addLayout(box) self.setLayout(hlayout) self.add_button.pressed.connect(self.on_add) self.del_button.pressed.connect(self.on_remove) self.add_file_button.pressed.connect(self.on_load_file) self.cancel_button.pressed.connect(self.reject) self.save_button.pressed.connect(self.accept) # Item selected in view self.view.selectionModel().selectionChanged.connect( self.on_item_selected) # Data changed in model self.model.dataChanged.connect(self.on_data_changed) self.model.rowsInserted.connect(self.on_data_changed) self.model.rowsRemoved.connect(self.on_data_changed)
def initialization(self): li = ["eat", "drink"] for l in li: item = self.get_item(l) listModel = QStringListModel() listModel.setStringList(item) model_1 = getattr(self, "list_{}".format(l)) model_2 = getattr(self, "list_{}_arr".format(l)) model_2.clear() model_2 += item model_1.setModel(listModel)
def open_user_config(datacontainer): from .designer_wrapper import UserConfigInvoker, QmlWrapper from PySide2.QtCore import QStringListModel userlist = sorted(shared.userconfig["users"].keys()) model = QStringListModel() model.setStringList(userlist) userconfiginvoker = UserConfigInvoker(model, userlist, datacontainer["doctors"]) QmlWrapper.from_resource("UserConfig", properties={"Users": model, "HP": userconfiginvoker, "Doctors": userconfiginvoker.doctorlist})
def __init__(self): super(Teacher_OP, self).__init__() self.setupUi(self) self.time = 0 self.num = 0 # 记录上张表的标签数量 self.get_time_timer = QTimer(self) self.get_table_list_thread = Table_List_Get(self) self.count_timer = QTimer(self) self.clear_msg_timer = QTimer(self) self.list_model = QStringListModel() self.table_list.setModel(self.list_model) self.get_table_data_thread = Table_Data_Get(self) self.start_sign_thread = Start_Sign_IN(self) self.stop_sign_thread = Stop_Sign_IN(self) self.get_time_thread = Get_Time(self) self.delete_table_thread = Delete_Option(self) self.train_model_thread = Train_Model(self) self.creat_excel_thread = Creat_Excel(self) # chart self.series = QtCharts.QBarSeries(self) self.target_bar = QtCharts.QBarSet('学生数量') self.series.append(self.target_bar) self.axis_x = QtCharts.QBarCategoryAxis() self.axis_x.setLabelsColor(QColor(255, 0, 0)) self.axis_y = QtCharts.QValueAxis() # self.axis_y.setTitleText('人数') self.chart = QtCharts.QChart() self.chart.addSeries(self.series) self.chart.setAxisX(self.axis_x, self.series) self.chart.setAxisY(self.axis_y, self.series) self.qcv = QtCharts.QChartView(self.chart) self.init_connect() self.set_start_dis_and_set_stop_en(False)
def available_db_combo(self): db_files = [] db_list_model = QStringListModel() for subdir, dirs, files in os.walk(os.path.dirname(os.path.realpath(__file__))): for file in files: filepath = subdir + os.path.sep + file if filepath.endswith(".db"): if filepath not in db_files: db_files.append(file[:-3]) db_list_model.setStringList(db_files) return db_list_model.stringList()
def __init__(self): self._tag_completer = QCompleter() # Sort by descending file count tagnames = [ tag[0] for tag in sorted(get_all_tags(), key=lambda t: -t[1]) ] self._tag_completer.setModel(QStringListModel(tagnames))
def columns_to_view(self, columns, view, chosen_row=None): """把一个路径下的文件在view中显示出来 Arguments: path {str} -- 科目、地区、试卷的路径 view {object} -- 用来显示的UI组件 """ # 读取数据库所有row的某column # 1. column -> 模型 # 2. 模型 -> view # 如果需要选中row,则选中它 model = QStringListModel() model.setStringList(columns) view.setModel(model) if chosen_row is not None: view.setCurrentIndex(chosen_row)
def _set_fetch_config(self, index): app_name = str(self.ui.app_combo.currentText()) bits = int(self.ui.bits_combo.currentText()) self.fetch_config = create_config(app_name, mozinfo.os, bits, mozinfo.processor) self.build_type_model = QStringListModel( self.fetch_config.available_build_types()) self.ui.build_type.setModel(self.build_type_model) if not self.fetch_config.available_bits(): self.ui.bits_combo.hide() self.ui.label_4.hide() else: self.ui.bits_combo.show() self.ui.label_4.show() # URL doesn't make sense for Thunderbird if app_name == "thunderbird": self.ui.url.hide() self.ui.url_label.hide() else: self.ui.url.show() self.ui.url_label.show()
def __init__(self): # constructor super().__init__() # call the parent's constructor # Test data in a model self.users = ['User 1', 'User 2', 'User 3'] self.lv_model = QStringListModel() self.lv_model.setStringList(self.users) # Create the main window content widget w = QWidget() # Setup the rest of the main window appearance self.setGeometry(300, 300, 1600, 800) self.setWindowTitle('PySide2 Listview Experiments') self.setWindowIcon(QIcon('assets/icons/moon_64x64.png')) # Create and set the main layout layout = QHBoxLayout() w.setLayout(layout) # Set the layout of the main window content widget self.setCentralWidget(w) # Left Panel # Right Panel # Create and add components to the layout self.lv_label = QLabel('QListView with QStringListModel') layout.addWidget(self.lv_label) self.file_view = QListView() self.file_view.setSelectionMode( QListView.MultiSelection) # single selection is the default self.file_view.setModel(self.lv_model) self.file_view.selectionModel().selectionChanged.connect( self.item_selected) layout.addWidget(self.file_view) self.button = QPushButton('Update model') self.button.clicked.connect(self.change_model) layout.addWidget(self.button) self.selected_label = QLabel('Selected item: none') layout.addWidget(self.selected_label) layout.addStretch(1) self.center() self.show() # display the UI
def search(self): self.search_r = self.podcast.search(self.dialog.edit.text()) names = [] if self.search_r: for i in self.search_r: names.append(i['collectionName']) model = QStringListModel(names) self.dialog.result_list.setModel(model)
def __init__(self): WizardPage.__init__(self) profile_persistence_options = ["clone", "clone-first", "reuse"] self.profile_persistence_model = QStringListModel( profile_persistence_options) self.ui.profile_persistence_combo.setModel( self.profile_persistence_model) self.ui.profile_persistence_combo.setCurrentIndex(0)
def initUI(self): self.setWindowTitle("list view") self.setGeometry(500,500,300,300) listview = QListView() slm = QStringListModel() self.qList = ['item1','item2','item3','item4'] slm.setStringList(self.qList) listview.setModel(slm) listview.clicked.connect(self.clicked) layout = QVBoxLayout() layout.addWidget(listview) self.setLayout(layout) self.show()
def __init__(self, field: str, parent=None): super().__init__(parent) self.field = field vlayout = QVBoxLayout() vlayout.setContentsMargins(0, 0, 0, 0) self.edit = QLineEdit() vlayout.addWidget(self.edit) self.setLayout(vlayout) self.completer = QCompleter() self.completer_model = QStringListModel() self.completer.setModel(self.completer_model) self.edit.setCompleter(self.completer) self.edit.textChanged.connect(self.changed)
class Window(QMainWindow): def __init__(self): super().__init__() # load the ui file self.ui = QUiLoader().load('listview_manip.ui') # connect signals/slots self.ui.load_btn.clicked.connect(self.on_load_btn_click) # you can access form objects directly ... # self.ui.<name_of_object>.<some_method>() # or search for them ... # self.found_object = self.ui.findChild(QPlainTextEdit, 'plainTextEdit') # or setup shorter references #self.my_text = self.ui.plainTextEdit # Test data in a model self.users = ['User 1', 'User 2', 'User 3'] self.lv_model = QStringListModel() self.lv_model.setStringList(self.users) # # Attach the model and selection events self.ui.file_view.setModel(self.lv_model) self.ui.file_view.selectionModel().selectionChanged.connect( self.item_selected) def item_selected(self): index = self.ui.file_view.currentIndex( ) # returns the primary QModelIndex self.ui.test_lbl.setText(index.data()) def on_load_btn_click(self): print('click!') file_name = self.load_file() self.ui.test_lbl.setText(file_name) def load_file(self): file_name = QFileDialog.getOpenFileName(self) #tr('Open AHLTA template'), '', tr('AHLTA template (*.txt)')) return file_name
def __init__(self, window): self.text_edit = QtGui.QTextEdit(window) self.text_edit.setReadOnly(True) # FIXME: write an optimized model self.traceback = None self.traceback_model = QStringListModel() self.traceback_view = QListView(window) self.traceback_view.setModel(self.traceback_model) self.traceback_view.setEditTriggers( QtGui.QAbstractItemView.NoEditTriggers) window.connect( self.traceback_view.selectionModel(), QtCore.SIGNAL( "selectionChanged(const QItemSelection&, const QItemSelection&)" ), self.frame_selection_changed) # filename => (lines, mtime) self._file_cache = {} self.clear()
def __init__(self,parent=None): super().__init__(parent) self.mydelegate = MyDelegate() self.listview = QListView() self.mymodel = QStringListModel() self.listview.setModel(self.mymodel) # 设置我们自己的delegate self.listview.setItemDelegate(self.mydelegate) self.battle_allies=r'battle_allies' self.battle_allies_list=[] for i in range (1,11): self.battle_allies_list.append(self.battle_allies+'%s.xml'%str(i)) self.mymodel.setStringList(self.battle_allies_list) print(self.battle_allies_list) print(self.mymodel.index(2,0).data())
def __init__(self, crypter): super(ControlMainWindow, self).__init__(None) self.icon = QSystemTrayIcon() self.icon.setIcon(QtGui.QIcon('./eve_tray.png')) self.icon.show() self.setWindowIcon(QtGui.QIcon('./eve_tray.png')) self.setWindowTitle('Pve Launcher') self.ui = Ui_main_window() self.ui.setupUi(self) self.icon.activated.connect(self.activate) self.account_list_model = QStringListModel() self.ui.listView.setModel(self.account_list_model) self.login_manager = EveLoginManager(crypter) self.init_none_ui(crypter) self.settings = None self.load_settings() self.ui.txt_client_path.setText(self.settings['eve_path'])
class ControlMainWindow(QMainWindow): def __init__(self, crypter): super(ControlMainWindow, self).__init__(None) self.icon = QSystemTrayIcon() self.icon.setIcon(QtGui.QIcon('./eve_tray.png')) self.icon.show() self.setWindowIcon(QtGui.QIcon('./eve_tray.png')) self.setWindowTitle('Pve Launcher') self.ui = Ui_main_window() self.ui.setupUi(self) self.icon.activated.connect(self.activate) self.account_list_model = QStringListModel() self.ui.listView.setModel(self.account_list_model) self.login_manager = EveLoginManager(crypter) self.init_none_ui(crypter) self.settings = None self.load_settings() self.ui.txt_client_path.setText(self.settings['eve_path']) def init_none_ui(self, crypter): self.login_manager.load() acc_list = [] for account_name in self.login_manager.accounts: acc_list.append(account_name) self.account_list_model.setStringList(acc_list) version_thread = Thread(target=self.check_eve_version) version_thread.start() def load_settings(self): try: with open('pvesettings.json', 'r') as settings_file: self.settings = json.load(settings_file) except FileNotFoundError: self.settings = dict() self.settings['eve_path'] = "" def save_settings(self): with open('pvesettings.json', 'w') as settings_file: json.dump(self.settings, settings_file) def closeEvent(self, event): self.login_manager.save() self.save_settings() def changeEvent(self, event): if event.type() == QEvent.WindowStateChange: if self.windowState() & Qt.WindowMinimized: self.icon.show() QTimer.singleShot(0, self, SLOT('hide()')) event.ignore() def func_launch(self): indexes = self.ui.listView.selectedIndexes() # i get QModelIndex here for idx in indexes: try: self.login_manager.login(idx.data(), self.get_auth_code, self.get_charname, self.ui.txt_client_path.text(), self.ui.cbox_server.currentText()) except Exception as e: logger.exception('Failed to launch') invoke_in_main_thread(QMessageBox.critical, self, "Launch Error", e.__str__(), QMessageBox.Ok) def func_edit(self): indexes = self.ui.listView.selectedIndexes() # i get QModelIndex here for idx in indexes: account = self.login_manager.accounts[idx.data()] dialog = AccountDialog("Edit Account", account.login_name, account.plain_password(self.login_manager.coder), account.direct_x, account.profile_name) if dialog.show(): # result = [name, password, path, dx]: path = dialog.result[2] if not path.endswith(os.sep): path = path + os.sep account = EveAccount(dialog.result[0], dialog.result[1], self.login_manager.coder, None, None, dialog.result[3], dialog.result[2]) self.login_manager.add_account(account) def func_add(self): dialog = AccountDialog("Create Account") if dialog.show(): # [name, password, profile_name, dx] account = EveAccount(dialog.result[0], dialog.result[1], self.login_manager.coder, None, None, dialog.result[3], dialog.result[2]) self.login_manager.add_account(account) acc_list = self.account_list_model.stringList() acc_list.append(account.login_name) self.account_list_model.setStringList(acc_list) def func_delete(self): indexes = self.ui.listView.selectedIndexes() # i get QModelIndex here model = self.ui.listView.model() for idx in indexes: self.login_manager.del_account(idx.data()) model.removeRow(idx.row()) def func_clear_cache(self): self.login_manager.clear_cache() def activate(self, reason): if reason == QSystemTrayIcon.Trigger or reason == QSystemTrayIcon.DoubleClick: self.showNormal() self.raise_() self.activateWindow() # self.setWindowState(Qt.WindowNoState) # self.activateWindow() def func_browse_eve(self): folder = QDir.toNativeSeparators( QFileDialog.getExistingDirectory(None, "Eve Directory", "", QFileDialog.ShowDirsOnly)) if not folder.endswith(os.sep): folder += os.sep self.ui.txt_client_path.setText(folder) self.settings['eve_path'] = folder def check_eve_version(self): headers = {'User-Agent': EveLoginManager.useragent} #version_url = "http://client.eveonline.com/patches/premium_patchinfoTQ_inc.txt" #req = request.Request(version_url, headers=headers) #response = request.urlopen(req) #version_data = response.read().decode('utf-8') #match = re.match("BUILD:(\\d+)", version_data) server_status = EveApi.get_server_status() if server_status.version is None: return None version_string = str(server_status.version) eve_version_okay: bool = check_eve_version( version_string, self.ui.txt_client_path.text()) if not eve_version_okay: invoke_in_main_thread(QtWidgets.QMessageBox.information, self, "Eve Clients out of date", "Your eve client is out of date.", QtWidgets.QMessageBox.Ok) def set_server_status(self, text, number): self.ui.label_server_status.setText( QApplication.translate("main_window", text, None) + "({0:d})".format(number)) def get_auth_code(self, opener, request): """ :param opener: urllib.request.build_opener for sending an authcode per mail :param request: request to send using the given opener :return: the authcode """ inputDialog = QInputDialog(self) inputDialog.setInputMode(QInputDialog.TextInput) inputDialog.setCancelButtonText("Cancel") inputDialog.setLabelText("Please enter your Authcode") inputDialog.setWindowTitle("TwoFactorAuth") inputDialog.setModal(True) response = None if inputDialog.exec_() == QInputDialog.Rejected: # send mail return None, None else: return response, inputDialog.textValue().strip() inputDialog.setCancelButtonText("Cancel") if inputDialog.exec_() == QInputDialog.Rejected: return response, None return response, inputDialog.textValue().strip() def get_charname(self): """ :param mailurl: url to call for sending an authcode per mail :return: the authcode """ inputDialog = QInputDialog(self) inputDialog.setInputMode(QInputDialog.TextInput) inputDialog.setLabelText("Please enter a Charname") inputDialog.setWindowTitle("Charname Challange") inputDialog.setModal(True) if inputDialog.exec_() == QInputDialog.Rejected: return None return inputDialog.textValue().strip()