Ethscriptions commited on
Commit
e73c97a
·
verified ·
1 Parent(s): 27355f0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -10
app.py CHANGED
@@ -31,7 +31,8 @@ def get_font(size=14):
31
  if os.path.exists(font_path):
32
  return font_manager.FontProperties(fname=font_path, size=size)
33
  else:
34
- st.warning("警告:未找到SimHei字体文件,显示可能不正确。请将 simHei.ttc 或 SimHei.ttf 文件放入项目文件夹。")
 
35
  return font_manager.FontProperties(family='sans-serif', size=size)
36
 
37
  def get_pinyin_abbr(text):
@@ -55,7 +56,7 @@ def format_seq(n):
55
  return circled_chars[n - 1]
56
  return f'({n})'
57
 
58
- # --- '放映时间核对表' 处理函数 ---
59
  def process_schedule_led(file):
60
  """处理 '放映时间核对表.xls' 文件"""
61
  try:
@@ -103,7 +104,7 @@ def process_schedule_led(file):
103
  return None, date_str
104
 
105
  def create_print_layout_led(data, date_str):
106
- """为 '放映时间核对表' 生成打印布局"""
107
  if data is None or data.empty:
108
  return None
109
  A4_width_in, A4_height_in = 8.27, 11.69
@@ -201,7 +202,7 @@ def create_print_layout_led(data, date_str):
201
  plt.close(fig)
202
  return outputs
203
 
204
- # --- '放映场次核对表' 处理函数 ---
205
  def process_schedule_times(file):
206
  """处理 '放映场次核对表.xls' 文件"""
207
  try:
@@ -209,7 +210,7 @@ def process_schedule_times(file):
209
  df = df.iloc[:, [6, 7, 9]]
210
  df.columns = ['Hall', 'StartTime', 'EndTime']
211
  df = df.dropna(subset=['Hall', 'StartTime', 'EndTime'])
212
- df['Hall'] = df['Hall'].str.extract(r'(\d+)').astype(str) + ' '
213
  base_date = datetime.today().date()
214
  df['StartTime'] = pd.to_datetime(df['StartTime'])
215
  df['EndTime'] = pd.to_datetime(df['EndTime'])
@@ -250,7 +251,7 @@ def process_schedule_times(file):
250
  return None, None, None
251
 
252
  def create_print_layout_times(data, title, date_str):
253
- """为 '放映场次核对表' 生成打印布局"""
254
  if data.empty:
255
  return None
256
 
@@ -267,10 +268,13 @@ def create_print_layout_times(data, title, date_str):
267
  fontsize_from_width = target_text_width_pt / (8 * 0.6)
268
  fontsize_from_height = cell_height_pt * 0.8
269
  base_fontsize = min(fontsize_from_width, fontsize_from_height)
 
 
 
 
270
  fig = plt.figure(figsize=(A5_WIDTH_IN, A5_HEIGHT_IN), dpi=300)
271
  fig.subplots_adjust(left=0, right=1, top=1, bottom=0)
272
- plt.rcParams['font.family'] = 'sans-serif'
273
- plt.rcParams['font.sans-serif'] = ['SimHei']
274
  gs = gridspec.GridSpec(
275
  num_rows + 1, NUM_COLS,
276
  hspace=0, wspace=0,
@@ -299,8 +303,10 @@ def create_print_layout_times(data, title, date_str):
299
  spine.set_color(BORDER_COLOR)
300
  spine.set_linewidth(0.75)
301
  display_text = f"{hall}{end_time}"
 
 
302
  ax.text(0.5, 0.5, display_text,
303
- fontproperties=get_font(base_fontsize),
304
  fontweight='bold',
305
  ha='center', va='center',
306
  transform=ax.transAxes)
@@ -308,8 +314,10 @@ def create_print_layout_times(data, title, date_str):
308
  ax.set_yticks([])
309
  ax.set_facecolor('none')
310
  ax_date = fig.add_subplot(gs[0, :])
 
 
311
  ax_date.text(0.01, 0.5, f"{date_str} {title}",
312
- fontproperties=get_font(base_fontsize * 0.5),
313
  color=DATE_COLOR, fontweight='bold',
314
  ha='left', va='center',
315
  transform=ax_date.transAxes)
 
31
  if os.path.exists(font_path):
32
  return font_manager.FontProperties(fname=font_path, size=size)
33
  else:
34
+ # 仅在使用时发出警告
35
+ st.warning("警告:未找到SimHei字体文件,部分复杂中文(如电影名)可能无法正确显示。请将 simHei.ttc 或 SimHei.ttf 文件放入项目文件夹。")
36
  return font_manager.FontProperties(family='sans-serif', size=size)
37
 
38
  def get_pinyin_abbr(text):
 
56
  return circled_chars[n - 1]
57
  return f'({n})'
58
 
59
+ # --- '放映时间核对表' 处理函数 (使用SimHei) ---
60
  def process_schedule_led(file):
61
  """处理 '放映时间核对表.xls' 文件"""
62
  try:
 
104
  return None, date_str
105
 
106
  def create_print_layout_led(data, date_str):
107
+ """为 '放映时间核对表' 生成打印布局 (使用SimHei)"""
108
  if data is None or data.empty:
109
  return None
110
  A4_width_in, A4_height_in = 8.27, 11.69
 
202
  plt.close(fig)
203
  return outputs
204
 
205
+ # --- '放映场次核对表' 处理函数 (使用默认字体) ---
206
  def process_schedule_times(file):
207
  """处理 '放映场次核对表.xls' 文件"""
208
  try:
 
210
  df = df.iloc[:, [6, 7, 9]]
211
  df.columns = ['Hall', 'StartTime', 'EndTime']
212
  df = df.dropna(subset=['Hall', 'StartTime', 'EndTime'])
213
+ df['Hall'] = df['Hall'].str.extract(r'(\d+号)').astype(str) + ' '
214
  base_date = datetime.today().date()
215
  df['StartTime'] = pd.to_datetime(df['StartTime'])
216
  df['EndTime'] = pd.to_datetime(df['EndTime'])
 
251
  return None, None, None
252
 
253
  def create_print_layout_times(data, title, date_str):
254
+ """为 '放映场次核对表' 生成打印布局 (使用默认字体)"""
255
  if data.empty:
256
  return None
257
 
 
268
  fontsize_from_width = target_text_width_pt / (8 * 0.6)
269
  fontsize_from_height = cell_height_pt * 0.8
270
  base_fontsize = min(fontsize_from_width, fontsize_from_height)
271
+
272
+ # **修改点**: 使用Matplotlib的默认字体设置
273
+ plt.rcParams['font.sans-serif'] = plt.rcParamsDefault['font.sans-serif']
274
+
275
  fig = plt.figure(figsize=(A5_WIDTH_IN, A5_HEIGHT_IN), dpi=300)
276
  fig.subplots_adjust(left=0, right=1, top=1, bottom=0)
277
+
 
278
  gs = gridspec.GridSpec(
279
  num_rows + 1, NUM_COLS,
280
  hspace=0, wspace=0,
 
303
  spine.set_color(BORDER_COLOR)
304
  spine.set_linewidth(0.75)
305
  display_text = f"{hall}{end_time}"
306
+
307
+ # **修改点**: 移除 fontproperties,改用 fontsize
308
  ax.text(0.5, 0.5, display_text,
309
+ fontsize=base_fontsize,
310
  fontweight='bold',
311
  ha='center', va='center',
312
  transform=ax.transAxes)
 
314
  ax.set_yticks([])
315
  ax.set_facecolor('none')
316
  ax_date = fig.add_subplot(gs[0, :])
317
+
318
+ # **修改点**: 移除 fontproperties,改用 fontsize
319
  ax_date.text(0.01, 0.5, f"{date_str} {title}",
320
+ fontsize=base_fontsize * 0.5,
321
  color=DATE_COLOR, fontweight='bold',
322
  ha='left', va='center',
323
  transform=ax_date.transAxes)