Я знаю, что на это уже был дан ответ, и этот ответ хорошо работает большую часть времени. Однако я обнаружил, что это не удалось в Chrome (но не в Firefox), если изображение svg было большим (примерно 1 МБ). Он работает, если вы вернетесь к использованию конструкции Blob
, как описано здесь здесь и здесь . Единственное отличие - это аргумент типа. В моем коде я хотел нажать одну кнопку, чтобы загрузить svg для пользователя, который я выполнил с помощью:
var svgData = $("#figureSvg")[0].outerHTML;
var svgBlob = new Blob([svgData], {type:"image/svg+xml;charset=utf-8"});
var svgUrl = URL.createObjectURL(svgBlob);
var downloadLink = document.createElement("a");
downloadLink.href = svgUrl;
downloadLink.download = "newesttree.svg";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
Если вы хотите продолжать звонить в том же диалоговом окне, пока пользователь не отменяет, сохраняя список всех вариантов, вы просто делаете это с помощью цикла. Итак, вместо этого:
programing_language, ok = QtGui.QInputDialog.getItem(self, "Add Developer",
"list of languages", items, 0, False)
... сделайте это:
progamming_languages = []
while True:
programing_language, ok = QtGui.QInputDialog.getItem(self, "Add Developer",
"list of languages", items, 0, False)
if not ok:
break
programming_languages.append(progamming_language)
Пока мы на нем, вы действительно должны проверять ok
вместо игнорируя его во всех других случаях. В конце концов, пользователь нажимает Cancel
вместо ввода имени при запросе имени, действительно ли вы хотите задавать вопросы и в итоге создать нового сотрудника с пустым именем?
Кроме того, ваш код будет намного более читабельным, если вы не запустите свои висячие отступы, уже выходящие из края экрана. Например, вместо этого:
programing_language, ok = QtGui.QInputDialog.getItem(self, "Add Developer",
"list of languages", items, 0, False)
... сделайте это:
programing_language, ok = QtGui.QInputDialog.getItem(
self, "Add Developer", "list of languages", items, 0, False)
... или, возможно, даже это:
programing_language, ok = QtGui.QInputDialog.getItem(
self, "Add Developer", "list of languages", items, 0, False
)
Или, даже лучше, получите автоформаттеры, такие как black
или yapf
, и настройте его для автоматического форматирования вашего кода при каждом сохранении, чтобы вам не приходилось думать о таких вещах.