Більше

Як програмно закрити вікно QMessagebox, не натискаючи "ОК" або "X"?

Як програмно закрити вікно QMessagebox, не натискаючи


Отже, частина мого сценарію в PyQGIS така:

QMessageBox.warning (Немає, "Попередження", "бла -бла -бла")

Коробка виглядає добре, але я хочу, щоб вона закрилася через кілька секунд, тому я шукаю щось подібне:

QMessageBox.warning (Немає, "Попередження", "бла -бла -бла") time.sleep (2) (команда, яка закриває вікно, не натискаючи "ОК" і не натискаючи X)

Якісь ідеї?


Натан В. має рацію. Але, якщо ви все одно хочете відобразити QMessageBox з поведінкою автозакриття. Ви можете зробити це, підкласувавши QMessageBox так:

клас CustomMessageBox (QMessageBox): def __init __ (self, *__ args): QMessageBox .__ init __ (self) self.timeout = 0 self.autoclose = False self.currentTime = 0 def showEvent (self, QShowEvent): self.currentTime = 0 if self.autoclose: self.startTimer (1000) def timerEvent (self, *args, ** kwargs): self.currentTime += 1, якщо self.currentTime> = self.timeout: self.done (0) @staticmethod def showWithTimeout ( timeoutSeconds, повідомлення, заголовок, значок = QMessageBox.Information, кнопки = QMessageBox.Ok): w = CustomMessageBox () w.autoclose = True w.timeout = timeoutSeconds w.setText (повідомлення) w.setWindowTitle (заголовок) w.setIcon ( піктограма) w.setStandardButtons (кнопки) w.exec_ ()

І називайте це так:

CustomMessageBox.showWithTimeout (3, "Автоматичне закриття за 3 секунди", "QMessageBox з автозакриттям", значок = QMessageBox.Warning)

Цей код є адаптацією з цієї відповіді в stackoverflow.


Не використовуйте для цього вікно повідомлень. Це не те, для чого вони, і змусить людей плакати. Використовуйте панель повідомлень.

iface.messageBar (). pushWarning ("назва", "повідомлення")

або

iface.messageBar (). pushMessage ("заголовок", "повідомлення")

http://qgis.org/api/classQgsMessageBar.html


Як я можу усунути & ldquoБільше доповнень, готових до використання & rdquo підказка в Internet Explorer?

Я керую кількома комп’ютерами під керуванням Windows 8.1. Кілька програмних пакетів, які я встановлюю на цих машинах, мають пов’язані надбудови для Internet Explorer. Поведінка Internet Explorer за промовчанням полягає в тому, щоб запропонувати користувачеві увімкнути надбудови під час першого запуску Internet Explorer після встановлення надбудови. Оскільки я встановлюю додатки, а оскільки я керую машинами, я хочу, щоб ці надбудови були ввімкнені за замовчуванням, і я не хочу, щоб користувач отримував запит. Я хочу, щоб користувач міг у разі необхідності зберегти можливість відключення доповнень для усунення несправностей, і якщо користувач отримав привілеї на встановлення програмного забезпечення, я хочу, щоб він/вона запитував будь-які доповнення, які він/вона встановлень, про які я не знаю.

Згідно з документацією Microsoft, це можливо через налаштування групової політики. (Зверніть увагу, що Автоматично активувати щойно встановлені доповнення налаштування під Конфігурація комп’ютера Адміністративні шаблони Компоненти Windows Internet Explorer ввімкнув би будь-яке доповнення, яке з'явилося без запиту, і тому воно не відповідає тому, що я хочу, як описано вище.)

Налаштування, яке, здається, повинно робити те, що я хочу, - це Список доповнень під Конфігурація комп’ютера Адміністративні шаблони Компоненти Windows Internet Explorer Функції безпеки Управління надбудовами. Цитується з MSDN:


Це один із найважливіших способів зробити це. Я прагнув зробити його максимально правильним і мінімальним. Я звернула увагу на наступне:

Методи блокування, які повторно вводять цикл подій, обов'язково є джерелом помилок і ніколи не повинні використовуватися. Тому ми не використовуємо QMessageBox :: exec ().

Використовуються стандартні кнопки.

Текст та інформативний текст надаються відповідно до керівних принципів людського інтерфейсу на різних платформах.

Модальність вікна повідомлень встановлюється відповідно до наших реальних вимог. Він є віконно-модальним, що запобігає взаємодії з базовим вікном, але не з рештою програми.

Дочірні віджети є постійними учасниками і не виділяються безпосередньо в купі. Це значно полегшує управління пам’яттю та використовує RAII. Внутрішньо вони все одно будуть розподіляти свої PIMPL по купі.

Ініціалізатори членів за замовчуванням використовуються при побудові членів.

Віджети, які додаються до макетів, є ні пройшов батько. Це було б зайвим.

Слоти мають описові назви, які вказують як на віджет, так і на який сигнал вони діють. У поєднанні з наданням віджетів імен об’єктів це дозволяє використовувати механізм connectSlotsByName. Це також полегшує налагодження, оскільки помічники налагодження дозволяють нам бачити імена об’єктів під час налагодження програми Qt.


Використовуючи Меню Пуск це ще один швидкий спосіб відкриття Налаштування у Windows 10. Натисніть або торкніться значка Почати кнопку, а потім Налаштування ярлик, зліва. Він схожий на шестірню.

Інший спосіб - натиснути на Почати , прокрутіть список додатків до тих, які починаються з літери S, а потім натисніть або торкніться Налаштування.


5 відповідей 5

Щоб запустити графічну програму на робочому столі користувача, вам потрібно знайти дві речі: на якому екрані відображається робочий стіл користувача (адреса) та який файл cookie для авторизації використовувати (пароль).

Наступна команда повинна перерахувати локальні дисплеї, на яких користувач увійшов (по одному на рядок) у більшості універсальних систем:

Знайти файли cookie для авторизації трохи складніше. Ви повинні шукати файл cookie користувача, який є

/.Xauthority за замовчуванням (все, що вам потрібно, це розташування файлу cookie, вам не потрібно витягувати файл cookie з нього). Це працює у багатьох системах, але не все залежить від диспетчера дисплея та способу його налаштування, зокрема Gdm (за замовчуванням в Ubuntu) не використовував місцезнаходження за умовчанням, коли я дивився. Я не можу придумати портативний спосіб дізнатися фактичний файл cookie X. Найбільш точний спосіб дізнатися -це дізнатися pid процесу X і знайти аргумент параметра -auth. Інший спосіб - знайти процес, запущений на цьому сервері X, і захопити його змінну довкілля XAUTHORITY. Якщо у вас виникли проблеми з пошуком файлу cookie, див. Розділ Відкриття вікна на віддаленому дисплеї X (чому & quotНеможливо відкрити дисплей & quot)?

Після того, як ви отримаєте обидві частини інформації, помістіть вибраний дисплей у змінну середовища DISPLAY, вибраний файл cookie X авторизації у змінну середовища XAUTHORITY, і ви встановите. Не має значення, якого користувача програма запускає разом із su, якщо хочете.


3 відповіді 3

Різноманітність $ mathbb^2 $ не є універсальним покривним простором будь -якого різноманіття, крім нього самого.

Один із способів переконатися в цьому -зауважити, що якщо $ M to N $ -це $ d $ -покриття закритих множин, то $ chi (M) = d chi (N) $. Як $ chi ( mathbb^2) = 3 $, ми бачимо, що $ d = 1 $, в цьому випадку $ N = mathbb^2 $, або $ d = 3 $. Якби існувало трилистове покриття, то різноманітність $ N $ задовольняло б $ pi_1 (N) cong mathbb_3 $ (оскільки це єдина група замовлення $ 3 $). Як $ mathbb_3 $ не має індексу двох підгруп, різноманітність $ N $ є орієнтованою. Але тоді підпис $ N $ задовольняє $ 1 = sigma ( mathbb^2) = 3 sigma (N) $, що неможливо, тому єдине різноманіття, яке покривається $ mathbb^2 $ - це саме по собі.

Загалом, пов'язана сума $ k $ копій $ mathbb^2 $ не охоплює жодного різноманіття, крім нього самого. Наведений вище аргумент щодо орієнтації частки не застосовується, коли $ k $ парний, натомість ви можете використовувати аргумент у цій відповіді (який працює для будь -яких $ k $).

Закрите просто з’єднане $ n $ -різноманіття для $ n = 2, 3 $ є сферою, тому найменший приклад має розмір принаймні 4 $ $. У вимірі $ 4 $ ми можемо показати, що $ mathbb^2 $ не покриває іншого різноманіття. У відповідях на це питання math.SE є два приємні аргументи, які я коротко опишу:

Використовуючи теорему Лефшеца про нерухому точку, ми можемо показати, що кожен диффеоморфізм $ f: mathbb^2 to mathbb^2 $ має нерухому точку. Звідси випливає, що $ mathbb^2 $ не допускає вільних дій будь -якої нетривіальної групи. Цей аргумент узагальнює всі $ mathbb^<2k> $.

$ chi ( mathbb^2) = 3 $, тож нетривіальний простір, що $ mathbb^2 $ обкладинки можуть мати лише $ chi (X) = 1 $. Цей простір має бути часткою через деяку дію $ mathbb/3 $ і $ pi_1 (X) cong mathbb/3 $, що означає, що $ H^1 (X, mathbb_2) = 0 $, а отже, $ X $ є орієнтованим. Але це означає $ b_4 = 1 $, тому $ chi (X) ge 2 $ суперечність. Цей аргумент узагальнює $ mathbb^<2k> $, коли $ 2k+1 $ є простим.

Варто звернути увагу на те, як обидва ці аргументи виявляються невдалими для сфер $ S^n $ (які охоплюють дійсні проективні простори $ mathbb^n $): 1) Лефшец показує, що диффеоморфізм може бути без фіксованої точки, якщо він діє на $ (-1)^$ на $ H_n $, що робить карта антипода, і 2) $ chi (S^n) = 1 + (-1)^n $, тому, коли $ n $ непарне, ми лише дізнаємось, що закритий простір також має $ chi = 0 $ (правда, наприклад, простіри лінз), і коли $ n $ парне, ми дізнаємось, що нетривіальний покритий простір має $ chi = 1 $, $ pi_1 = mathbb_2 $ і не може бути орієнтованим, що є послідовним і відповідає $ mathbb^n $.

Я також хочу зазначити, що на відміну від класифікації покривних просторів, яка є суто теоретично гомотопічною, оскільки вона залежить лише від $ pi_1 $, класифікація накриті пробіли делікатно залежить від типу гомеоморфізму. Наприклад, точка не охоплює нічого нетривіально, крім $ mathbb$ робить. Фактично для кожної групи $ G $ і кожного просто пов'язаного простору $ X $ ми можемо знайти гомотопічно еквівалентний простір $ X '$, який охоплює простір з $ pi_1 cong G $. Тому вивчення закритих просторів є справді топологічним питанням, заданим точками.


Показує форму як модальне діалогове вікно.

Повертає

Винятки

Показана форма вже видно.

Показана форма вимкнена.

Показана форма не є вікном верхнього рівня.

Форма, яка відображається як діалогове вікно, вже є модальною.

Поточний процес не працює в інтерактивному режимі користувача (докладнішу інформацію див. У розділі UserInteractive).

Приклади

У наведеному нижче прикладі форма відображається як модальне діалогове вікно та оцінюється повернене значення діалогового вікна, перш ніж визначити, чи слід читати значення елемента керування TextBox у формі діалогового вікна. У цьому прикладі потрібно створити форму з назвою testDialog і вона містить елемент керування TextBox з назвою TextBox1. Крім того, у прикладі вимагається, щоб код у цьому прикладі містився та викликався з іншої форми, щоб відобразити testDialog як модальне діалогове вікно. У прикладі використовується версія ShowDialog, яка вказує власника діалогового вікна.

Зауваження

Цей метод можна використовувати для відображення модального діалогового вікна у вашій програмі. Коли цей метод викликається, код, що слідує за ним, не виконується до закриття діалогового вікна. Діалоговому вікну можна призначити одне зі значень перерахування DialogResult, призначивши його властивості DialogResult кнопки на формі або встановивши властивість DialogResult форми у коді. Потім це значення повертається цим методом. Ви можете використовувати це повернене значення, щоб визначити, як обробляти дії, що відбулися у діалоговому вікні. Наприклад, якщо діалогове вікно було закрито і за допомогою цього методу було повернуто значення DialogResult.Cancel, ви можете запобігти виконанню коду після виклику ShowDialog.

Коли форма відображається як модальне діалогове вікно, клацніть на Закрити button (кнопка з X у верхньому правому куті форми) призводить до приховування форми та встановлення властивості DialogResult на DialogResult.Cancel. На відміну від немодальних форм, метод Close не викликається .NET Framework, коли користувач натискає кнопку закриття форми діалогового вікна або встановлює значення властивості DialogResult. Натомість форма прихована і може бути показана знову без створення нового екземпляра діалогового вікна. Оскільки форма, що відображається як діалогове вікно, прихована, а не закрита, вам потрібно викликати метод Dispose форми, коли форма більше не потрібна вашій програмі.

Ця версія методу ShowDialog не вказує форму або елемент керування як власника. При виклику цієї версії поточне активне вікно стає власником діалогового вікна. Якщо ви хочете вказати конкретного власника, скористайтеся іншою версією цього методу.


І 1, і 3 граматично правильні, але я б взяв їх для опису тонко різних речей.

Якби Джон взяв це, він би повідомив мені це.

Це заява очікування. Перевести його у більш складну форму. & quotЯкщо правда, що Джон це зробив, я очікую, що він залишить мені повідомлення, щоб повідомити мене. Я повинен піти і спробувати знайти це повідомлення & quot. По суті, це задумано як умовне твердження, яке стверджує, що ми можемо визначити, чи прийняв його Джон, дослідивши, чи залишив Джон якесь повідомлення.

Якби Джон взяв його, він би повідомив мені.

Це твердження сумніву. Wordier: & quotЯкби Джон був правдою, я б знав, тому що він би повідомив мені це. Він не повідомив мене, тому я не вірю, що Джон це прийняв & quot. Хоча це зазначено умовно, це задумано як аргумент, чому Джон цього не прийняв.

Якщо Джон це зробив, він би повідомив мені.

Це, суворо, граматично неправильно. Граматично правильна форма, яка, ймовірно, передбачається для читання: "Якщо Джон взяв її, він дасть мені знати". Питання в тому, що & quottook & quot і & quotwill & quot не будуть добре поєднуватися.


Шахрайство в тоталізаторах Вимагайте банківські чи кредитні картки, щоб отримати ваш приз

Вам потрібно підтвердити номер свого банківського рахунку або номер кредитної картки, щоб отримати приз? Це явна ознака шахрайства в лотереї.

Законні розіграші не надсилають призи прямим депозитом, їм також не потрібно знімати гроші з вашого банку або перевіряти інформацію за допомогою номера кредитної картки. Єдина конфіденційна інформація, яка потрібна законному спонсору лотереї для обробки вашого виграшу, - це ваш номер соціального страхування.

Вимагати банківський рахунок або номер кредитної картки - це величезний червоний прапор, який має справу з аферою тоталізаторів, і ви ніколи не повинні передавати цю інформацію.


2 відповіді 2

Ні, те, що ви запитуєте, неможливо.

Іншими словами, меню Dock Tile програми не дозволяє закривати окремі вікна, які програма відкривала.

Якщо ви шукаєте найшвидший спосіб закрити кілька вікон документів у програмі, то вже є багато кращих способів, ніж використання Dock.

Ви можете прокручувати відкриті вікна в одному додатку за допомогою Command `(це може відрізнятися в інших розкладках клавіатури, але зазвичай це ключ ліворуч від Z). Ви можете закрити кілька документів в одній програмі за допомогою послідовності команд W, використовуючи Command `, щоб прогорнути документи, які потрібно тримати відкритими. Я б сказав, що це набагато швидше, ніж намагатися закрити 7 з 10 у Доці. Якщо ви отримаєте запит на Зберегти або Не економити, можна скористатися командою S або командою D.

Ви можете використовувати Додаток Windows функціональна клавіша для відображення всіх вікон програми. Також Контроль місій показує всі вікна всіх програм.

Ви можете закрити всі документи однієї програми за допомогою Alt Command W або натиснувши клавішу Alt на червону крапку будь-якого вікна.

Ви також можете мінімізувати вікна в Dock, але я б не радив цього. Дуже легко забути про те, що ви мінімізували, і вам потрібно зняти мінімізацію, перш ніж робити що-небудь ще з вікном. Ви не можете використовувати ярлик циклу вікна вище для доступу до мінімізованих вікон.