Python: пытаюсь создать приложение, которое закрепляет/добавляет папку в меню ПУСК.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python: пытаюсь создать приложение, которое закрепляет/добавляет папку в меню ПУСК.

Сообщение Anonymous »

Код: Выделить всё

import os
import tkinter as tk
from tkinter import filedialog, font, messagebox, Text
import subprocess

# Path to store pinned folders
path_file = "Path.txt"

class PinFolderApp:
def __init__(self, root):
self.root = root
self.root.title("PIN Folder to START Menu")
self.root.geometry("1250x590")
self.root.configure(bg="#C0392B")

# Load Poppins font
self.poppins_font = font.Font(family="Poppins", size=12)

# Message field
self.message_label = tk.Label(self.root, text="Welcome to the PIN Folder to START Menu", font=self.poppins_font, bg="#C0392B", fg="#ECF0F1")
self.message_label.pack(pady=10)

# Browse Folder Location button
self.browse_button = tk.Button(self.root, text="Browse Folder Location", command=self.browse_folder, height=3, width=20, bg="#283747", fg="#ECF0F1", font=self.poppins_font)
self.browse_button.pack(pady=10)

# Display box for pinned folders
self.display_box = tk.Text(self.root, height=10, width=80, font=self.poppins_font)
self.display_box.pack(pady=10)
self.load_pinned_folders()

# Add Folder To Start Menu button
self.add_button = tk.Button(self.root, text="Add Folder To Start Menu", command=self.pin_folder, height=3, width=20, bg="#283747", fg="#ECF0F1", font=self.poppins_font)
self.add_button.pack(pady=10)

# Text entry box and Remove Folder button
self.remove_entry = tk.Entry(self.root, font=self.poppins_font)
self.remove_entry.insert(0, "Enter Folder To Delete")
self.remove_entry.bind("", self.clear_entry)
self.remove_entry.pack(pady=10)

self.remove_button = tk.Button(self.root, text="Remove Folder From Start Menu", command=self.remove_folder, height=3, width=20, bg="#283747", fg="#ECF0F1", font=self.poppins_font)
self.remove_button.pack(pady=10)

# Close button
self.close_button = tk.Button(self.root, text="Close", command=self.root.quit, height=3, width=20, bg="#283747", fg="#ECF0F1", font=self.poppins_font)
self.close_button.pack(pady=10)

self.selected_folder = None

def browse_folder(self):
folder_selected = filedialog.askdirectory()
if folder_selected:
folder_name = os.path.basename(folder_selected)
self.selected_folder = folder_selected
self.message_label.config(text=f"Selected Folder:  {folder_name}")

def pin_folder(self):
if self.selected_folder:
folder_name = os.path.basename(self.selected_folder)
# Pin folder to Start Menu using a PowerShell script
powershell_script = f"""
$shortcutPath = "$env:APPDATA\\Microsoft\\Windows\\Start Menu\\Programs\\{folder_name}.lnk"
if (!(Test-Path -Path $shortcutPath -PathType Leaf)) {{
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut($shortcutPath)
$shortcut.TargetPath = "{self.selected_folder}"
$shortcut.Save()
}}
"""
subprocess.run(["powershell", "-Command", powershell_script], check=True)
self.message_label.config(text=f"Folder '{folder_name}' Is Pinned")
self.save_pinned_folder(self.selected_folder)
self.load_pinned_folders()

def remove_folder(self):
folder_name = self.remove_entry.get().strip()
if folder_name and folder_name.lower() != "enter folder to delete".lower():
# Remove folder from Start Menu using a PowerShell script
powershell_script = f"""
$shortcutPath = "$env:APPDATA\\Microsoft\\Windows\\Start Menu\\Programs\\{folder_name}.lnk"
if (Test-Path -Path $shortcutPath) {{
Remove-Item -Path $shortcutPath -Force
}}
"""
subprocess.run(["powershell", "-Command", powershell_script], check=True)
self.message_label.config(text=f"Folder '{folder_name}' Is Removed")
self.remove_pinned_folder(folder_name)
self.load_pinned_folders()

def clear_entry(self, event):
self.remove_entry.delete(0, tk.END)

def save_pinned_folder(self, folder_path):
with open(path_file, 'a') as f:
f.write(folder_path + '\n')

def load_pinned_folders(self):
self.display_box.delete(1.0, tk.END)
if os.path.exists(path_file):
with open(path_file, 'r') as f:
folders = f.readlines()
for folder in folders:
folder_name = os.path.basename(folder.strip())
self.display_box.insert(tk.END, folder_name + '\n')

def remove_pinned_folder(self, folder_name):
if os.path.exists(path_file):
with open(path_file, 'r') as f:
folders = f.readlines()
with open(path_file, 'w') as f:
for folder in folders:
if os.path.basename(folder.strip()).lower() != folder_name.lower():
f.write(folder)

# Run the application
if __name__ == "__main__":
root = tk.Tk()
app = PinFolderApp(root)
root.mainloop()
Я пытаюсь создать приложение на Python, которое можно использовать для закрепления/добавления и удаления любой папки в меню ПУСК. Допустим, я создаю папку с именем 55 в папке «Загрузки». Я открываю приложение, выбираю эту папку, нажимаю кнопку «Добавить папку в меню «Пуск», и она закрепляется. Само приложение работает нормально. Ярлык создается в C:\Users\MyID\AppData\Roaming\Microsoft\Windows\Start Menu\Programs, но проблема в том, что он не открывается. Значок папки не отображается, он полностью белый. Когда я открываю «Свойства», он правильно отображает «Цель», но «Тип цели» отображается как: Файл. Должно быть: Папка с файлами. Есть идеи, что является причиной проблемы и как ее исправить?

Подробнее здесь: https://stackoverflow.com/questions/790 ... start-menu
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как закрепить приложение в меню «Пуск» Windows 11
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как закрепить приложение в меню «Пуск» Windows 11
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Linux закрепляет несколько потоков пользовательского пространства к ядру в изолированном списке процессоров
    Anonymous » » в форуме Linux
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Сертификат Alamofire закрепляет MITM
    Anonymous » » в форуме IOS
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Сертификат Alamofire закрепляет MITM
    Anonymous » » в форуме IOS
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»