使用wxWidgets我使用以下代码:
HWND main_window = ...
...
wxWindow *w = new wxWindow();
wxWindow *window = w->CreateWindowFromHWND(0, (WXHWND) main_window);
Run Code Online (Sandbox Code Playgroud)
我如何在Qt中做同样的事情?该HWND是我想作为新QtWidget父窗口的窗口的句柄.
这是我得到的小部件的层次结构:
Frame> wxBoxSizer> wxPanel> wxBoxSizer> wxFlexGridSizer(2列,9行),里面有各种表单字段和按钮.
第一个BoxSizer是放置面板,第二个是围绕FlexGrid创建边框.
一切看起来都不错,如果窗口被放大,框架可以正常扩展,但它也可以调整到几乎没有,隐藏所有表单元素.
如何将窗口的最小大小强制为FlexGridSizer默认建议的大小(所有表单元素都可见且具有最小可能的大小)?
我写了一个绘图功能,绘制各种屏幕上的精灵.这些精灵只能重叠到一个点.如果它们有很多重叠,它们会变得太模糊.因此,我需要检测这些精灵何时重叠太多.幸运的是,问题被简化,因为精灵可以被视为正交矩形.我想知道这些矩形重叠多少.现在,我只是通过测试一个矩形中的每个像素来强制它,以查看另一个矩形是否包含它.我计算这些并计算重叠百分比.我认为这可能是一种更好,更少蛮力的方法.我可以使用什么算法来确定这个?
我正在使用wxwidgets.
我正在尝试使用gui2exe(使用py2exe创建.exe)将我的python脚本编译成单个.exe.我的程序使用wxWidgets,每次我尝试编译它时都会收到以下错误消息:
错误MSVCP90.dll:没有这样的文件或目录.
我已经下载并安装了VC++可再发行组件包,所以我应该有这个.dll不应该吗?
我正在使用Enthought Python Distribution(7.2,64位).它没有wxPython(这非常重要).但是,wxPython-2.9似乎支持64位Cocoa接口,所以我试了一下.实际上,这一切都很顺利:命令
python build-wxpython.py --osx_cocoa --mac_framework --install
Run Code Online (Sandbox Code Playgroud)
成功编译,甚至进入EPD网站包.但是,一个简单的wxPython代码
import wx
wx.App()
Run Code Online (Sandbox Code Playgroud)
失败,出现以下错误:
This program needs access to the screen.
Please run with a Framework build of python, and only when you are
logged in on the main display of your Mac.
Run Code Online (Sandbox Code Playgroud)
你能给我一些如何治愈的建议吗?EPD显然是一个Python框架(即,查看/Library/Frameworks/EPD64.framework和/Library/Frameworks/Python.framework让我信服它)但是这个wxPython构建并不知道.wxPython的版本是2.9.3.1
级别:初学者
我最近开始使用wxPython编写GUI应用程序.我在创建可滚动面板时遇到问题.我已经有一个wx.Frame工作正常.我的gui有2个面板.(请暂时忽略面板-3)我想让我的面板2可滚动,以便它可以包含更多元素.我的GUI的基本结构如下:

我已经尝试wx.lib.scrolledpanel.ScrolledPanel()在我的代码中使用但滚动条由于某种原因没有出现.我的代码如下:
panel2 = wx.lib.scrolledpanel.ScrolledPanel(self,-1, size=(600,400), pos=(0,28), style=wx.SIMPLE_BORDER)
panel2.SetupScrolling()
button1 = wx.Button(panel2,label="Button 1",pos=(0,50),size=(50,50))
button2 = wx.Button(panel2,label="Button 2",pos=(0,100), size=(50,50))
button3 = wx.Button(panel2,label="Button 3",pos=(0,150),size=(50,50))
button4 = wx.Button(panel2,label="Button 4",pos=(0,200), size=(50,50))
button5 = wx.Button(panel2,label="Button 5",pos=(0,250),size=(50,50))
button6 = wx.Button(panel2,label="Button 6",pos=(0,300), size=(50,50))
button7 = wx.Button(panel2,label="Button 7",pos=(0,350), size=(50,50))
button8 = wx.Button(panel2,label="Button 8",pos=(0,400), size=(50,50))
Run Code Online (Sandbox Code Playgroud)
目前,当我执行我的代码时,我得到的面板2只有7个按钮而不是8.我希望第8个按钮会创建滚动条,因为它不适合面板2的尺寸.任何人都可以建议什么可能解决我的问题或我错过了什么?
谢谢你的时间和PS:这里有一个类似的问题,但没有回答.
完整的代码可以在下面找到:
import wx
import wx.lib.scrolledpanel
class GUI(wx.Frame):
def __init__(self,parent,id,title):
#First retrieve the screen size of the device
screenSize = wx.DisplaySize()
screenWidth = screenSize[0]
screenHeight = …Run Code Online (Sandbox Code Playgroud) 我有一个wx.Dialog子类,当用户单击OK按钮时需要执行几个清理操作.该的wx.Dialog文件称,点击确定或取消应该发射EVT_CLOSE事件:
EVT_CLOSE:用户或以编程方式关闭对话框(请参阅Window.Close).用户可以生成此事件,单击关闭按钮(通常是标题栏右上角的"X")(如果存在)(请参阅CLOSE_BOX样式)或单击带有ID_CANCEL或ID_OK ID的按钮.
但是,我正在使用WX 2.9.5.0(通过wxPython),当我在此测试应用程序中单击"确定"或"取消"时,不会调用OnClose方法.单击系统的关闭按钮(我正在使用OS X)时调用OnClose.我是否实现了此事件处理错误或者wx.Dialog是否真的不符合其文档?在后一种情况下,拦截单击"确定"按钮的最佳方法是什么?
from __future__ import print_function
import wx
class TestDialog(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, title='Test Dialog')
sizer = wx.BoxSizer(wx.VERTICAL)
message = wx.StaticText(self, wx.NewId(), 'This is some dummy text')
sizer.Add(message)
ok_button = wx.Button(self, wx.ID_OK, 'OK')
cancel_button = wx.Button(self, wx.ID_CANCEL, 'Cancel')
btn_sizer = self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL)
btn_sizer.Add(cancel_button)
btn_sizer.Add(ok_button)
sizer.Add(btn_sizer)
self.SetSizer(sizer)
self.Bind(wx.EVT_CLOSE, self.OnClose)
def OnClose(self, event):
print('In OnClose')
event.Skip()
if __name__ == '__main__':
app = wx.App(False)
dialog = TestDialog(None)
result = dialog.ShowModal()
print('Result: {}'.format(result))
Run Code Online (Sandbox Code Playgroud) 我刚开始用C++学习wxWidgets 3.0版.我已经注意到,wxWidgets中的事件处理是由Event表完成的.但是一个教程也提到了Connect() - 实际上它只是说:"本教程将使用事件表,而不是Connect()".
我想知道,事件表和Connect()背后的哲学是什么?有什么区别,什么时候比另一个更合适......谢谢.
我需要做一个
slider = wx.Slider(self, 100, 25, 1, 100, (30, 60), (250, -1), wx.SL_HORIZONTAL)
Run Code Online (Sandbox Code Playgroud)

具有透明背景(因为它出现在具有不均匀背景的面板上).
更一般地说,如何才能将其外观改为这样的?

(.png如果需要,我可以使用小部件元素的文件.)
如果在我的应用程序运行时关闭计算机,我的应用程序会抛出一些奇怪的错误.
有时消息是(地址)内存不能"读",有时不能"写".
以正常方式关闭应用程序不会生成此类消息.
如何模拟"windows shutdown"以便我可以调试我的应用程序?如何才能找出应用程序尝试执行的操作?