rainmeter可通过复制改写分组实现多城市天气并列显示;需为各城市独立配置measure与meter、定义城市代码或名称变量、错开updatedivider避免限流。

Rainmeter本身不支持单个皮肤直接并列显示多个城市的天气,但可以通过“复制+改写+分组”方式实现多城市对比效果。核心在于为每个城市独立配置一套Measure(数据获取)和Meter(显示),避免变量冲突,并合理安排位置布局。
一、准备多个城市代码与API适配
国内多数天气皮肤依赖中国天气网或第三方聚合接口,需确保每个城市都有对应数字编码(如北京101010100、上海101020100、广州101280101)。若使用OpenWeatherMap,则直接填英文城市名(Beijing、Shanghai、Guangzhou),且需统一启用同一API Key。
- 打开皮肤.ini文件,确认已启用
DynamicVariables=1(在[Rainmeter]节下),否则后续变量无法实时更新 - 在[Variables]节中,为每个城市定义独立变量,例如:
City1Code=101010100City2Code=101020100City3Code=101280101 - 若用OpenWeatherMap,添加:
OWMKey=your_32_digit_api_keyCity1Name=BeijingCity2Name=Shanghai
二、为每个城市建立独立数据测量组
不能共用同一个WebParser Measure,否则会相互覆盖。必须为每座城市创建专属的MeasureWebParser + MeasureLoop组合,并用不同名称区分。
- 复制原天气Measure段落,重命名为
[MeasureWeather1]、[MeasureWeather2]、[MeasureWeather3] - 每个Measure中Url需替换为对应城市参数,例如:
→Url=http://weather.51wnl.com/weatherinfo/GetMoreWeather?cityCode=#City1Code#&weatherType=0
→Url=https://api.openweathermap.org/data/2.5/weather?q=#City1Name#&appid=#OWMKey#&units=metric - 正则表达式(RegExp)保持一致,但
StringIndex和Substitute需对应各自字段,比如温度提取统一用"temp":(.+?),再通过StringIndex=1取值
三、构建并列显示的Meter结构
每个城市的显示区域建议用独立MeterGroup控制位置,避免重叠。推荐横向排列(左→中→右)或纵向堆叠(上→中→下),用X/Y坐标或相对定位(X=R、Y=r)对齐。
- 为城市1设置:
[MeterCity1Title] Meter=String Text="北京" X=10 Y=5[MeterCity1Temp] Meter=String MeasureName=MeasureWeather1Temp Text="%1°C" - 为城市2设置偏移(如横向):
X=120(距前一组110px间距)[MeterCity2Title] ... Text="上海" - 为城市3继续偏移:
X=230,依此类推 - 所有相关Meter(图标、湿度、风速等)均按相同X偏移复制,保持列对齐
四、优化加载与刷新逻辑
多个WebParser同时请求可能触发限流或延迟,建议错开更新时间,提升响应稳定性。
- 给每个Measure设置不同
UpdateDivider,例如:[MeasureWeather1] UpdateDivider=600(10分钟)[MeasureWeather2] UpdateDivider=605(错开5秒)[MeasureWeather3] UpdateDivider=610 - 禁用不必要的动态刷新(如去掉
Update=1000全局高频刷新),仅保留WebParser所需频率 - 首次加载后右键皮肤 → “刷新皮肤”,观察日志(右键托盘图标 → “调试” → 勾选“启用日志”)确认各Measure是否返回有效数据











