Lua(wxLua)如何在中心“面板”中创建嵌套的“panel1”方块

问题描述 投票:0回答:1

我在 Windows 10 上使用 ZeroBrane Studio(2.01;MobDebug 0.805)。 我需要在“面板”顶部插入一个白色方形面板。该面板应该是正方形的。 面板应随窗口尺寸缩放。

我想要这个:

MWE:

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)

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)

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()

我尝试使用 Sizer。

lua wxwidgets wxlua
1个回答
0
投票

不清楚您的白色方块是否应该是一个窗口,或者应该只显示在面板上。在后一种情况下,您需要连接到

wxEVT_PAINT
并在处理程序中绘制一个居中矩形。

如果您想要一个窗口,您可以创建一个窗口并将其添加到网格大小调整器或使用嵌套框大小调整器。确切的方法取决于您是否想要在正方形周围有固定边框或更复杂的边框。

与您的问题并不真正相关,但是:

  • 无需调用
    SetAutoLayout(true)
    ,这是默认的。
  • 在同一代码中同时使用
    wxGROW
    wxEXPAND
    会让人感到困惑,它们是同义词并且含义完全相同。
© www.soinside.com 2019 - 2024. All rights reserved.