标签: wxwidgets

如何创建一个HWND作为父级的QWidget?

使用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父窗口的窗口的句柄.

c++ windows qt wxwidgets

9
推荐指数
2
解决办法
7138
查看次数

如何在wxWidgets中设置最小窗口大小?

这是我得到的小部件的层次结构:

Frame> wxBoxSizer> wxPanel> wxBoxSizer> wxFlexGridSizer(2列,9行),里面有各种表单字段和按钮.

第一个BoxSizer是放置面板,第二个是围绕FlexGrid创建边框.

一切看起来都不错,如果窗口被放大,框架可以正常扩展,但它也可以调整到几乎没有,隐藏所有表单元素.

如何将窗口的最小大小强制为FlexGridSizer默认建议的大小(所有表单元素都可见且具有最小可能的大小)?

user-interface wxwidgets cross-platform wxperl

9
推荐指数
2
解决办法
8041
查看次数

如何计算两个矩形的重叠百分比?

我写了一个绘图功能,绘制各种屏幕上的精灵.这些精灵只能重叠到一个点.如果它们有很多重叠,它们会变得太模糊.因此,我需要检测这些精灵何时重叠太多.幸运的是,问题被简化,因为精灵可以被视为正交矩形.我想知道这些矩形重叠多少.现在,我只是通过测试一个矩形中的每个像素来强制它,以查看另一个矩形是否包含它.我计算这些并计算重叠百分比.我认为这可能是一种更好,更少蛮力的方法.我可以使用什么算法来确定这个?

我正在使用wxwidgets.

c++ algorithm math wxwidgets

9
推荐指数
1
解决办法
3559
查看次数

使用gui2exe制作Windows .exe因为缺少MSVCP90.dll而无法正常工作

我正在尝试使用gui2exe(使用py2exe创建.exe)将我的python脚本编译成单个.exe.我的程序使用wxWidgets,每次我尝试编译它时都会收到以下错误消息:

错误MSVCP90.dll:没有这样的文件或目录.

我已经下载并安装了VC++可再发行组件包,所以我应该有这个.dll不应该吗?

python dll wxwidgets py2exe gui2exe

9
推荐指数
1
解决办法
3134
查看次数

Mac OS X上的wxPython 2.9

我正在使用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和/L​​ibrary/Frameworks/Python.framework让我信服它)但是这个wxPython构建并不知道.wxPython的版本是2.9.3.1

python wxwidgets enthought

9
推荐指数
1
解决办法
2787
查看次数

在wxPython中创建滚动面板

级别:初学者

我最近开始使用wxPython编写GUI应用程序.我在创建可滚动面板时遇到问题.我已经有一个wx.Frame工作正常.我的gui有2个面板.(请暂时忽略面板-3)我想让我的面板2可滚动,以便它可以包含更多元素.我的GUI的基本结构如下:

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)

python wxwidgets wxpython

9
推荐指数
1
解决办法
9530
查看次数

单击wx.Dialog中的"确定"或"取消"按钮时,为什么没有触发EVT_CLOSE?

我有一个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)

wxwidgets wxpython

8
推荐指数
1
解决办法
3818
查看次数

wxWidgets - 事件表vs Connect()?

我刚开始用C++学习wxWidgets 3.0版.我已经注意到,wxWidgets中的事件处理是由Event表完成的.但是一个教程也提到了Connect() - 实际上它只是说:"本教程将使用事件表,而不是Connect()".

我想知道,事件表和Connect()背后的哲学是什么?有什么区别,什么时候比另一个更合适......谢谢.

c++ wxwidgets event-handling

8
推荐指数
1
解决办法
4155
查看次数

使用wxPython的自定义滑块小部件

我需要做一个

slider = wx.Slider(self, 100, 25, 1, 100, (30, 60), (250, -1), wx.SL_HORIZONTAL)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

具有透明背景(因为它出现在具有不均匀背景的面板上).

更一般地说,如何才能将其外观改为这样的?

在此输入图像描述

(.png如果需要,我可以使用小部件元素的文件.)

python wxwidgets wxpython slider custom-controls

8
推荐指数
1
解决办法
919
查看次数

关闭计算机时Windows如何关闭程序?

如果在我的应用程序运行时关闭计算机,我的应用程序会抛出一些奇怪的错误.

有时消息是(地址)内存不能"读",有时不能"写".

以正常方式关闭应用程序不会生成此类消息.

如何模拟"windows shutdown"以便我可以调试我的应用程序?如何才能找出应用程序尝试执行的操作?

c++ windows wxwidgets

8
推荐指数
1
解决办法
1390
查看次数