Скрипт Python не отвечает

#python

#python

Вопрос:

(Я новичок в программировании) Я написал графический интерфейс python для запуска пакетных файлов, которые могут активировать различные игровые режимы в CSGO на локальном сервере Steam. Когда я запускаю скрипт, все работает, но после выполнения команды программа больше не отвечает.

 import tkinter as tk
import subprocess

def startA(): 
       subprocess.call([r'D:CSGO_serverArms_race.bat'])
def startCa(): 
       subprocess.call([r'D:CSGO_serverCasual.bat'])
def startCo(): 
       subprocess.call([r'D:CSGO_serverCompetitive.bat'])
def startDea(): 
       subprocess.call([r'D:CSGO_serverDeathmatch.bat'])
def startDem(): 
       subprocess.call([r'D:CSGO_serverDemolition.bat'])
def startQ(): 
       subprocess.call([r'D:CSGO_serverQuit.bat'])

root = tk.Tk()
root.title("Settings")
frame = tk.Canvas(root)
frame.pack()

Armsrace = tk.Button(frame, 
                   text="Arms_race", 
                   fg="red",
                   command=startA)
Armsrace.pack(side=tk.BOTTOM)

Casual = tk.Button(frame,
                   text="Casual",
                   fg="red",
                   command=startCa)
Casual.pack(side=tk.BOTTOM)

Competitive = tk.Button(frame, 
                   text="Competitive", 
                   fg="red",
                   command=startCo)
Competitive.pack(side=tk.BOTTOM)

Deathmatch = tk.Button(frame, 
                   text="Deathmatch", 
                   fg="red",
                   command=startDea)
Deathmatch.pack(side=tk.BOTTOM)

Demolition = tk.Button(frame, 
                   text="Demolition", 
                   fg="red",
                   command=startDem)                     
Demolition.pack(side=tk.BOTTOM)

Stop = tk.Button(frame, 
                   text="Stop Server", 
                   fg="red",
                   command=startQ)                     
Stop.pack(side=tk.BOTTOM)


root.mainloop()
 

Я только что запустил цикл?(но у меня там уже есть цикл, так как же мне тогда это сделать?)
Или это что-то совершенно другое?

Заранее спасибо (также извините, что не поместил код в качестве примера кода)

Комментарии:

1. Возможно, ваши скрипты .bat не завершаются?

2. как сказал @glibdud — subprocess может запускаться .bat и никогда не заканчивается — и тогда mainloop не может работать. Вы можете попытаться запустить subprocess thread или попробовать добавить amp; команду, чтобы запустить ее в фоновом r'D:CSGO_serverQuit.bat amp;' режиме, возможно, это сработает. Вы также можете попробовать использовать amp; inside .bat . Но я не уверен amp; , работает ли это на Windows — я использую Linux.

3. Теперь я создал еще один командный файл, который создает свой собственный подпроцесс, и теперь он работает. Я думаю, что это как-то связано с командой Steamcmd. Спасибо за вашу помощь.

Ответ №1:

вы проверяли свой каталог, существуют ли там ваши файлы или нет?