You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在wxLua的中心panel中创建可缩放的嵌套方形panel1

在wxLua中实现可缩放的正方形面板并插入到现有布局上方

以下是修改后的完整代码,实现了在原panel上方添加一个白色正方形面板panel1,且该面板会随窗口大小同步缩放并保持正方形形态:

package.cpath = package.cpath..";./?.dll;./?.so;../lib/?.so;../lib/vc_dll/?.dll;../lib/bcc_dll/?.dll;../lib/mingw_dll/?.dll;"
require("wx")

frame = wx.wxFrame(wx.NULL, wx.wxID_ANY,  "wxLua sizer test frame", wx.wxDefaultPosition, wx.wxSize(450, 450), wx.wxDEFAULT_FRAME_STYLE)

-- 创建白色正方形面板panel1
panel1 = wx.wxPanel(frame, wx.wxID_ANY)
panel1:SetBackgroundColour(wx.wxWHITE) -- 设置白色背景

panel = wx.wxPanel(frame, wx.wxID_ANY)

button1 = wx.wxButton(frame, wx.wxID_ANY, "Button1")
button2 = wx.wxButton(frame, wx.wxID_ANY, "Button2")

topsizer = wx.wxBoxSizer(wx.wxVERTICAL)
bottomsizer = wx.wxBoxSizer(wx.wxHORIZONTAL)

-- 使用AspectRatioSizer保持panel1的正方形比例
local aspectSizer = wx.wxAspectRatioSizer(1) -- 1:1的宽高比
aspectSizer:Add(panel1, 1, wx.wxEXPAND + wx.wxALL, 6)
topsizer:Add(aspectSizer, 1, wx.wxEXPAND) -- 将比例sizer添加到顶部

topsizer:Add(panel, 1, wx.wxGROW + wx.wxALL, 6)

topsizer:Add(bottomsizer, 0, wx.wxEXPAND + wx.wxALL, 0);

bottomsizer:Add(button1, 1, wx.wxEXPAND + wx.wxALL, 6)
bottomsizer:Add(button2, 1, wx.wxEXPAND + wx.wxALL, 6)

function onButton1Click(event)
    wx.wxMessageBox("Button1 clicked!", "Information", wx.wxOK + wx.wxICON_INFORMATION)
end

button1:Connect(wx.wxEVT_COMMAND_BUTTON_CLICKED, onButton1Click)

function onButton2Click(event)
    wx.wxMessageBox("Button2 clicked!", "Information", wx.wxOK + wx.wxICON_INFORMATION)
end

button2:Connect(wx.wxEVT_COMMAND_BUTTON_CLICKED, onButton2Click)

frame:SetAutoLayout(true)
frame:SetSizer(topsizer)

wx.wxGetApp():SetTopWindow(frame)
frame:Show(true)

wx.wxGetApp():MainLoop()

关键实现说明

  • 白色面板创建:通过wx.wxPanel创建panel1,调用SetBackgroundColour(wx.wxWHITE)设置白色背景。
  • 正方形比例控制:使用wx.wxAspectRatioSizer并传入比例值1,强制面板保持1:1的宽高比,无论窗口如何缩放,面板始终为正方形。
  • 布局插入:将包裹panel1的比例sizer添加到topsizer的最顶部,确保它显示在原panel的上方。
  • 缩放适配:给比例sizer设置wx.wxEXPAND标志并分配权重1,让它能随窗口大小变化自动调整尺寸,同时维持正方形形态。

内容的提问来源于stack exchange,提问作者Youra_P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:16:19