#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:
вы проверяли свой каталог, существуют ли там ваши файлы или нет?