import threading
import tkinter as tk
from tkinter import filedialog
import os
import subprocess
from threading import Thread
import ctypes
def lplplk_1(path_1):
subprocess.Popen([path_1], shell=True)
def lplplk(path_2):
dgetvc = Thread(target=lplplk_1, args=(path_2,))
dgetvc.start()
def kojihugy(lp):
fhruhfrhfu = Thread(target=lplplk, args=(lp,))
fhruhfrhfu.start()
class 游戏列表(tk.Tk):
def __init__(self, title):
super().__init__()
super().after(1000, self.do_something)
self.title(title)
self.geometry('400x300')
self.configure(bg='black')
self.game_names = []
self.game_paths = []
self.load_game_list_from_txt('games.txt')
self.threads = [] # Store references to threads
self.InitUI()
def do_something(self):
print("I am in a loop that runs every 1000ms = 1s")
super().after(1000, self.do_something)
def load_game_list_from_txt(self, file_path):
try:
with open(file_path, 'r', encoding='utf-8') as file:
self.game_names = []
self.game_paths = []
for i, line in enumerate(file):
if i % 2 == 0:
name = line.strip()
self.game_names.append(name)
else:
path = line.strip()
self.game_paths.append(path)
except FileNotFoundError:
print(f"文件未找到: {file_path}")
except Exception as e:
print(f"读取文件时发生错误: {e}")
def save_game_list_to_txt(self, file_path):
with open(file_path, 'w', encoding='utf-8') as file:
for name, path in zip(self.game_names, self.game_paths):
file.write(f"{name}\n{path}\n")
def InitUI(self):
panel = tk.Frame(self)
self.listbox = tk.Listbox(panel, width=40, height=10)
self.listbox.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
for name, path in zip(self.game_names, self.game_paths):
self.listbox.insert(tk.END, f"{name}\n{path}")
self.listbox.bind('<<ListboxSelect>>', self.OnGameSelected)
add_button = tk.Button(panel, text="添加游戏", command=self.OnAddGame, font=('楷体', 15), bg='black', fg='white', activebackground="black")
add_button.pack(side=tk.LEFT, padx=5, pady=5)
panel.pack(side=tk.TOP, fill=tk.X)
def on_close(self):
for thread in self.threads:
if thread.is_alive():
thread.join()
self.destroy()
def OnGameSelected(self, event):
index = self.listbox.curselection()
if index:
name = self.listbox.get(index)
path = name.split('\n')[1]
print(f"打开游戏: {name} ({path})")
kojihugy(path)
def OnAddGame(self):
path = filedialog.askopenfilename(title="选择游戏文件", filetypes=[("可执行文件", "*.exe;*.lnk")])
if path:
name = os.path.basename(path)
self.game_names.append(name)
self.game_paths.append(path)
self.listbox.insert(tk.END, f"{name}\n{path}")
self.save_game_list_to_txt('games.txt')
print(f"添加了游戏: {name} ({path})")
def dark_title_bar(window):
window.update()
DWMWA_USE_IMMERSIVE_DARK_MODE = 20
set_window_attribute = ctypes.windll.dwmapi.DwmSetWindowAttribute
get_parent = ctypes.windll.user32.GetParent
hwnd = get_parent(window.winfo_id())
rendering_policy = DWMWA_USE_IMMERSIVE_DARK_MODE
value = 2
value = ctypes.c_int(value)
set_window_attribute(hwnd, rendering_policy, ctypes.byref(value), ctypes.sizeof(value))
window.update()
def lpko():
root = 游戏列表('游戏列表')
root.geometry("400x300")
root.resizable(False, False)
dark_title_bar(root)
root.mainloop()
def koj(i):
if i == 1:
lpkojihugyfttdrses = Thread(target=lpko)
lpkojihugyfttdrses.start()
else:
pass
koj(1)
python代码如上出现以下错误该怎么解决怎么试都不行, 错误:Tcl_AsyncDelete: async handler deleted by the wrong thread