GUI 환경에서 외부 프로그램 실행하기 예제 코드입니다.
import tkinter as tk
from tkinter import filedialog, messagebox
import subprocess
import ctypes
import sys
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
def run_as_admin():
if is_admin():
# 이미 관리자 권한으로 실행 중이라면 아무것도 하지 않음
return True
else:
# 관리자 권한으로 다시 실행
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)
return False
def execute_program():
program_name = program_entry.get()
options = options_entry.get()
if not program_name:
messagebox.showerror("에러", "프로그램명을 입력하세요.")
return
if runas_var.get() == 1:
# 관리자 모드로 실행
if not is_admin():
result = messagebox.askyesno("확인", "프로그램을 관리자 모드로 실행하시겠습니까?")
if result:
run_as_admin()
else:
return
program_command = f'runas /user:Administrator "{program_name} {options}"'
else:
# 관리자 모드로 실행하지 않음
program_command = f'"{program_name}" {options}'
try:
subprocess.run(program_command, shell=True)
except Exception as e:
messagebox.showerror("에러", f"프로그램 실행 중 오류 발생:\n{e}")
if __name__ == '__main__':
# 윈도우 생성
window = tk.Tk()
window.title("외부 프로그램 실행 GUI")
# 프로그램명 입력
program_label = tk.Label(window, text="프로그램명:")
program_label.grid(row=0, column=0, padx=10, pady=10, sticky=tk.E)
program_entry = tk.Entry(window, width=50)
program_entry.grid(row=0, column=1, padx=10, pady=10)
# 옵션 입력
options_label = tk.Label(window, text="옵션:")
options_label.grid(row=1, column=0, padx=10, pady=10, sticky=tk.E)
options_entry = tk.Entry(window, width=50)
options_entry.grid(row=1, column=1, padx=10, pady=10)
# 체크박스: 관리자 모드로 실행
runas_var = tk.IntVar()
runas_checkbox = tk.Checkbutton(window, text="관리자 모드로 실행", variable=runas_var)
runas_checkbox.grid(row=2, column=0, columnspan=2, padx=10, pady=5, sticky=tk.W)
# 실행 버튼
execute_button = tk.Button(window, text="실행하기", command=execute_program)
execute_button.grid(row=3, column=0, columnspan=2, pady=10)
# GUI 실행
window.mainloop()
'공학속으로 > python' 카테고리의 다른 글
[Python] 네이버API를 사용한 뉴스 검색 크롤링하기 (5) | 2024.09.20 |
---|---|
[Python] URL 목록 파일 이용한 파일 다운로드 (0) | 2024.07.16 |
[파이썬] 파일 복사 GUI 형태로 만들기 (0) | 2023.12.16 |
[python] json 파일을 csv로 저장하기 (0) | 2023.12.16 |
[Python] 스트리밍, 동영상 플레이 하기 (1) | 2023.10.17 |
댓글