- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否有可能使 wxFrame 对象表现得像模态对话框,因为创建 wxFrame 对象的窗口会停止执行,直到 wxFrame 对象退出?
我正在研究 small game并遇到了以下问题。我有一个托管主应用程序(战略部分)的主程序窗口。有时,我需要将控制转移到第二个窗口以解决部分游戏(战术部分)。在第二个窗口中,我希望第一个窗口中的处理停止并等待第二个窗口中完成的工作完成。
通常模式对话框可以解决问题,但我希望新窗口具有一些我似乎无法通过 wxDialog 获得的功能,即底部的状态栏和调整大小/最大化/最小化的能力窗口(这应该可行但不起作用,请参阅此问题 How to get the minimize and maximize buttons to appear on a wxDialog object )。
作为补充说明,我希望第二个窗口的功能需要与主窗口完全分离,因为它最终会被分离到一个单独的程序中。
有没有人做过这个或者有什么建议?
最佳答案
我也在寻找类似的解决方案并想出了这个解决方案,创建一个框架,通过执行 frame.MakeModal() 禁用其他窗口并在显示框架后停止执行开始和事件循环,当框架关闭时退出事件循环,例如我这里是使用 wxpython 的示例,但它在 wxwidgets 中应该类似。
import wx
class ModalFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, style=wx.DEFAULT_FRAME_STYLE|wx.STAY_ON_TOP)
btn = wx.Button(self, label="Close me")
btn.Bind(wx.EVT_BUTTON, self.onClose)
self.Bind(wx.EVT_CLOSE, self.onClose) # (Allows main window close to work)
def onClose(self, event):
self.MakeModal(False) # (Re-enables parent window)
self.eventLoop.Exit()
self.Destroy() # (Closes window without recursion errors)
def ShowModal(self):
self.MakeModal(True) # (Explicit call to MakeModal)
self.Show()
# now to stop execution start a event loop
self.eventLoop = wx.EventLoop()
self.eventLoop.Run()
app = wx.PySimpleApp()
frame = wx.Frame(None, title="Test Modal Frame")
btn = wx.Button(frame, label="Open modal frame")
def onclick(event):
modalFrame = ModalFrame(frame, "Modal Frame")
modalFrame.ShowModal()
print "i will get printed after modal close"
btn.Bind(wx.EVT_BUTTON, onclick)
frame.Show()
app.SetTopWindow(frame)
app.MainLoop()
关于c++ - 如何使 wxFrame 表现得像模态 wxDialog 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/883498/
我在 Linux 上使用 wxDialog 对象时遇到问题在对象的构造器中,我传递了相关的样式标志 (wxCAPTION|wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxCLOSE_B
我写了一个继承自wxDialog的类。我目前在 Ubuntu 12.04 上,使用 Code::Blocks 和 gcc 4.6。在我将此类包含在项目中之前,我的应用程序工作正常:调试和发布配置给出相
我正在创建我自己的 wxDialog 子类,它在用作无模式对话框时效果很好,如下所示: AddDialog newAddDialog = new AddDialog(this, wxID_ANY, _
我有大量使用 wxWidgets 的现有代码。主窗口是wxDialog。现在我必须向该对话框添加一个 wxMenuBar。但是,为了做到这一点,窗口应该派生自 wxFrame。 是否可以将 wxMen
如上图所示.. 我在 wxWidgets 中创建了一个 wxDialog。用户可以单击"is"或“否”。单击任一按钮后,将打开一个标准对话框,给出一条简单消息(覆盖成功或覆盖取消) 单击"is"或“否
我的 wxWidgets 程序应该可以在桌面 PC 和 Windows 平板电脑上运行。两者均使用 Windows 10 Pro 64 位版本。我怎样才能使大小不断变化的文本无论在对话框中显示在何处?
这是我的布局: 我有一个包含网格(比例为 1)和确定/取消按钮栏的 sizer 所有的东西都在一个 wxDialog 中 这里是: ||||||||||||||| | | |
我是 C++ 新手,也是 Codelite 新手,也是 wxCrafter 新手。我正在尝试构建一些 GUI 应用程序,但我对 C++ 中的对象传递感到困惑。我花了几个小时,我才明白一点。首先,要在
和上次类似的问题。我运行代码,退出它。 GUI 消失了,它似乎已经完全退出,但我检查了我的进程列表,代码仍然保留在内存中。 我已经将它缩小到对 wxFileDialog 的调用。我不明白我做错了什么,
是否有可能使 wxFrame 对象表现得像模态对话框,因为创建 wxFrame 对象的窗口会停止执行,直到 wxFrame 对象退出? 我正在研究 small game并遇到了以下问题。我有一个托管主
这似乎是windows特有的,这里有一个重现效果的例子: import wx def makegrid(window): grid = wx.GridSizer(24, 10, 1, 1)
我的程序打开一个基于 wxFrame 的窗口和多个基于 wxDialog 的无模式和无父窗口。除了基于 wxDialog 的窗口坚持始终位于基于 wxFrame 的窗口之上之外,这一切都运行良好。 我
我是一名优秀的程序员,十分优秀!