Два экземпляра окна tkinter создаются при запуске скрипта Python от имени администратора - PullRequest
0 голосов
/ 15 октября 2019

Я занимаюсь разработкой небольшого приложения с использованием tkinter UI, которое имеет окна и небольшую форму с тремя входами и кнопкой.

Требуется запуск с правами администратора (некоторые операции с файлами в C:\). Я использую следующий код, и он отлично работает.

import admin
if not admin.isUserAdmin():
    admin.runAsAdmin()

Единственная проблема, с которой я сталкиваюсь, - это когда я запускаю скрипт python (.py), он создает два экземпляра одного и того же окна. Появляются даже два окна среды Python (черный экран cmd из python.exe).

  1. Появляется диалоговое окно UAC, запрашивающее разрешение на запуск от имени администратора. Когда я нажимаю «Да», окно появляется как admin.
  2. Простое окно (то же приложение), но без прав администратора. Появляется после закрытия 1-го окна.

Я использую Windows 10 и Visual Studio 2015 Pro и Python 2.7.

Вот как я инициализирую пользовательский интерфейс.

window = Tk()
window.title("User Interface")
.........
.........
# all other code blocks(UI + Business Logic) appear here.
.........
.........
window.mainloop()

1 Ответ

1 голос
/ 18 октября 2019

Просто используйте:

import admin
if not admin.isUserAdmin():
    admin.runAsAdmin()
    quit()

Как я понимаю, вы запускаете ту же программу (admin.runAsAdmin()), но не закрываете не-админскую. Для этого используйте quit() или sys.exit(). Надеюсь, что это полезно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...