我安装了wxWidgets源代码,编译它并将这样获得的库与我的应用程序代码链接起来.现在我需要在我的wxWidgets应用程序中使用OpenGL.我如何启用此功能?
有没有办法根据(C++)wxWidgets中当前选择的字体确定给定字符串的显示长度(以像素为单位)?
例如,如果我打印出字符串"Speed:"并希望在':'和即将关注的值之间放置10个像素,我需要知道"Speed:"字符串的长度.有没有办法确定这个?我似乎无法在API文档中找到任何内容,但我可能会遗漏一些东西.
作为wxWidgets的新手,我需要一些示例代码来说明如何使wxTimer工作.
该引用提供了3种使用它的方法,但不包括任何方法的示例代码.最理想的是,我想让方法2工作.
编辑:这是我的错字.出于某种原因,我无法在GetEventObject之后看到缺少parantheses.
码:
def onKeyDown(self, event):
ESC_list = [self.topic_control,self.search_control]
print event.GetEventObject() in ESC_list
keycode = event.GetKeyCode()
print keycode == wx.WXK_ESCAPE
if keycode == wx.WXK_ESCAPE and event.GetEventObject in ESC_list:
print "fire"
self.onExit(event)
event.Skip()
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,两个print语句都给我"True",if条件不执行.是什么赋予了?
为什么这个正则表达式不起作用?
import re
i="<wx._controls.Button; proxy of <Swig Object of type 'wxButton *' at 0x2d040b0> >"
m = re.match("controls(.*)[;]", i)
if m:
print m.group(1)
Run Code Online (Sandbox Code Playgroud)
它什么都不返回.我试图让一切介于两者之间,"控制"和";" 此解决方案适用于其他测试用例,但不适用于此测试用例.
我正在尝试使用WxWidgets库将GUI添加到我的程序中.我还有一个头文件,我把所有#include语句放在那里("All_Headers.h").
我添加了一个头文件,其中包含一个简单的WxFrame(Hello world like)到头文件("GUI.h")中.
问题是如果我把(#include"GUI.h")放在All_Headers.h中我得到以下错误:(Kernel.obj和Crystall_Builder.obj是我的目标文件)
1>Kernel.obj : error LNK2005: "protected: static struct wxEventTable const MyFrame::sm_eventTable" (?sm_eventTable@MyFrame@@1UwxEventTable@@B) already defined in Crystall_Builder.obj
1>Kernel.obj : error LNK2005: "protected: virtual struct wxEventTable const * __cdecl MyFrame::GetEventTable(void)const " (?GetEventTable@MyFrame@@MEBAPEBUwxEventTable@@XZ) already defined in Crystall_Builder.obj
1>Kernel.obj : error LNK2005: "protected: virtual class wxEventHashTable & __cdecl MyFrame::GetEventHashTable(void)const " (?GetEventHashTable@MyFrame@@MEBAAEAVwxEventHashTable@@XZ) already defined in Crystall_Builder.obj
1>Kernel.obj : error LNK2005: "public: __cdecl MyFrame::MyFrame(class wxString const &,class wxPoint const &,class wxSize const &)" (??0MyFrame@@QEAA@AEBVwxString@@AEBVwxPoint@@AEBVwxSize@@@Z) already defined in Crystall_Builder.obj
1>Kernel.obj : error LNK2005: …Run Code Online (Sandbox Code Playgroud) 我想知道何时调整了框架的大小,以便我可以保存大小并在下次启动应用程序时记住它。这是我的on_resize方法:
def on_resize(self, event):
logic.config_set('main_frame_size',
(event.Size.width, event.Size.height))
event.Skip()
Run Code Online (Sandbox Code Playgroud)
它是这样绑定的:
self.Bind(wx.EVT_SIZE, self.on_resize)
Run Code Online (Sandbox Code Playgroud)
问题是性能。为了安全起见,我的逻辑模块会在每次设置更改时保存配置文件,并且每次触发调整大小事件时都写入配置文件会影响性能。
当用户完成调整框架大小时,最好/最简单的监视方法是什么?
我的config_set功能:
def config_set(key, value):
"""Set a value to the config file."""
vprint(2, 'Setting config value: "{}": "{}"'.format(key, value))
config[key] = value
# Save the config file.
with open(config_file_path, 'w') as f:
pickle.dump(config, f)
Run Code Online (Sandbox Code Playgroud) 是否可以选中/取消选中wxPython中的复选框?例如:
my_checkbox = wx.CheckBox(my_sizer, wx.ID_ANY, _("My Check Box"))
self.bind(EVT_BUTTON, my_button_func, my_button)
def my_button_func(self, event):
mycheckbox.Check()
Run Code Online (Sandbox Code Playgroud)
或者类似的东西,我可以随意检查/取消选中该框.
我正在尝试创建一个简单的基本应用程序,以wxWidgets开始。我已经可以设置框架并在其上放置菜单,菜单项和按钮,并且它们都可以正确显示。
但是我在使用Bind()将事件处理程序附加到按钮时遇到了麻烦。剥离一下代码,我有这个:
class MainFrameFunctions
{
public:
void buttonOneClicked(wxCommandEvent & event);
};
void MainFrameFunctions::buttonOneClicked(wxCommandEvent & event)
{
// do something
}
MainFrame::MainFrame(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint& , const wxSize& , long style, const wxString& ) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, size1)
{
wxButton * buttonOne = new wxButton( panelOne, buttonOneID, wxT("Show Box"), wxPoint(70,50), wxSize(200,40) );
}
Run Code Online (Sandbox Code Playgroud)
因此,我想知道如何使用Bind()创建事件处理程序,以将处理程序功能“ buttonOneClicked”连接到buttonOne?还有,我在代码中的什么位置放置Bind()行?
编辑
经过VZ的推荐。我对该程序进行了一些编辑,因此主要组件现在看起来像这样:
class MainFrame: public wxFrame
{
public:
MainFrame(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint
&pos=wxDefaultPosition, const …Run Code Online (Sandbox Code Playgroud) 我一直在观看迈克尔·奥斯曼关于伟大斯科特小工具SDR的视频指南.在他的视频中,他在TTF水槽上盘旋,显示频率,功率和TTF.如果我在OS X上这样做,我不会得到这个黄色弹出窗口 - 除了我的TTF接收器看起来不同的事实.
这是gnuradio中的设置,还是OS X问题?我正在运行gnuradio 3.7.9.1.
编辑:似乎安装pyopengl解决了这个问题,因为WX正在回归"某事".使用pip install pyopengl安装它并重新启动gnuradio.
wxwidgets gnuradio software-defined-radio gnuradio-companion