From f6aa7c8b93d18d9c42ce22317db75536c596a080 Mon Sep 17 00:00:00 2001 From: march3 Date: Sat, 30 Dec 2023 20:28:20 +0800 Subject: [PATCH] =?UTF-8?q?Python=E8=B6=85=E4=BA=BA-=E5=AE=87=E5=AE=99?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sim_scenes/featured/jupiter_moon_protects_earth.py | 5 ++++- sim_scenes/universe_sim_scenes.py | 5 ++++- simulators/ursina_simulator.py | 3 ++- tools/sim_video_cap.bat | 2 +- tools/sim_video_cap.py | 11 +++++++---- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/sim_scenes/featured/jupiter_moon_protects_earth.py b/sim_scenes/featured/jupiter_moon_protects_earth.py index e4345c7..a75cc09 100644 --- a/sim_scenes/featured/jupiter_moon_protects_earth.py +++ b/sim_scenes/featured/jupiter_moon_protects_earth.py @@ -241,7 +241,10 @@ class JupiterMoonProtectsEarthSim(UniverseSimScenes): camera_look_at(self.sun) def on_ready(self): - from ursina import application + from ursina import application, window + + # window.title = '宇宙模拟器(universe sim)' + # 运行前触发 self.text_panel = create_text_panel(font="fonts/DroidSansFallback.ttf", font_scale=1.3) self.text_panel.text = self.colliding_info % (0, "0.0%", diff --git a/sim_scenes/universe_sim_scenes.py b/sim_scenes/universe_sim_scenes.py index 668fa3b..774e5c4 100644 --- a/sim_scenes/universe_sim_scenes.py +++ b/sim_scenes/universe_sim_scenes.py @@ -8,7 +8,7 @@ # ============================================================================== from objs import CoreValagaClas import sys -from ursina import application +from ursina import application, window class UniverseSimScenes: @@ -30,6 +30,9 @@ class UniverseSimScenes: cls.record_rate = 2 UniverseSimScenes.screen_record = True application.time_scale = 0.00001 + # from ursina import application, window + + window.title = "rec_"+sys.argv[1] instance = super().__new__(cls) return instance diff --git a/simulators/ursina_simulator.py b/simulators/ursina_simulator.py index 03273b7..580541d 100644 --- a/simulators/ursina_simulator.py +++ b/simulators/ursina_simulator.py @@ -39,7 +39,8 @@ class UrsinaSimulator(Simulator): def __init__(self, bodies_sys: System): # window.borderless = False - window.title = '宇宙模拟器(universe sim)' # 'universe_sim' # '宇宙模拟器' + if not str(window.title).startswith("rec_"): + window.title = '宇宙模拟器(universe sim)' # 'universe_sim' # '宇宙模拟器' icon = find_file("images/icon.ico") window.icon = icon self.app = Ursina() diff --git a/tools/sim_video_cap.bat b/tools/sim_video_cap.bat index 025a05f..72b004c 100644 --- a/tools/sim_video_cap.bat +++ b/tools/sim_video_cap.bat @@ -21,6 +21,6 @@ cd %SimFilePath% start python -m %SimFileName% %3 cd %SimDir%\tools -python -m sim_video_cap --save_name=%param3% --wait=%param4% +python -m sim_video_cap --save_name=%param3% --wait=%param4% --window_name=rec_%param3% diff --git a/tools/sim_video_cap.py b/tools/sim_video_cap.py index 0dc85a3..99f973b 100644 --- a/tools/sim_video_cap.py +++ b/tools/sim_video_cap.py @@ -11,7 +11,7 @@ import win32api import traceback -def get_window_handle(window_name="宇宙模拟器(universe sim)"): +def get_window_handle(window_name): """ 获取模拟器窗口句柄 @param window_name: @@ -35,6 +35,7 @@ def get_args(): parser.add_argument('--total_time', type=int, default=10000000, help='video total time') parser.add_argument('--save_name', type=str, default='jupiter_moon_protects_earth7.mp4', help='save file name') parser.add_argument('--wait', type=int, default=0, help='wait for recoding') + parser.add_argument('--window_name', type=str, default="宇宙模拟器(universe sim)", help='宇宙模拟器(universe sim)') # parser.add_argument('--screen_type', default=0, type=int, choices=[0, 1], help='1: full screen, 0: region screen') args = parser.parse_args() @@ -44,7 +45,8 @@ def get_args(): args.save_name = rename_exists(args.save_name) print("save_name:", args.save_name) - print("wait:", args.wait) + print("save_name:", args.save_name) + print("window_name:", args.window_name) if args.save_name == '': args.save_name = 'video.mp4' return args @@ -107,10 +109,11 @@ def wait_sec(sec=0): def sim_window_screen_shot(wait_ses=-1, retry_times=3): + global args times = wait_ses * 100 while True: handle, desktop_dc, img_dc, img = None, None, None, None - handle = get_window_handle() + handle = get_window_handle(args.window_name) if handle > 0: desktop_dc = win32gui.GetWindowDC(handle) width, height = get_window_size(handle) @@ -170,7 +173,7 @@ def check_img(img): if __name__ == '__main__': args = get_args() - handle = get_window_handle() + handle = get_window_handle(args.window_name) # print(get_args()) print("请在10秒内打开模拟器") img = sim_window_screen_shot(10) -- GitLab