我有一个带有 wx.Notebook 的简单应用程序,它看起来像这样:

为了布局它的子元素,我使用了 wx.GridBagSizer - 它工作得很好。然而,我遇到了一个小但烦人的问题。当我展开 wx.Notebook 的窗口时,它不会展开所有元素并导致窗口如下所示:
这实际上不是我想要的。我应该如何修改代码以便在调整窗口大小时能够展开所有子元素?干杯:)
我的代码很简单:
import wx
import wx.richtext
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='wx.Notebook')
book = wx.Notebook(self)
page = MyPage(parent=book)
book.AddPage(page, 'Page 1')
book.AddPage(MyPage(book),'Page 2')
book.AddPage(MyPage(book),'Page 3')
self.SetSize(wx.Size(320,250))
self.Centre()
class MyPage(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, size=(0,0))
# create sizer to add a border
bagSizer = wx.GridBagSizer(15, 10)
mainSizer = wx.BoxSizer(wx.VERTICAL)
label = wx.StaticText(self, label="Text:")
self.content1 = wx.TextCtrl(self, size=(300, 20))
self.content2 = wx.richtext.RichTextCtrl(self, size=(300, 100), style=wx.TE_MULTILINE)
bagSizer.Add(self.content1, pos=(0, 0), flag=wx.TOP | wx.LEFT …Run Code Online (Sandbox Code Playgroud) 很高兴见到你。我在使用 wxpython 时遇到一些问题。那是我无法控制 TextCtrl 函数的光标。这是我的 wxpython 代码。
#!/usr/bin/python
import wx
def get_main_screen_text():
text = "\n [Anyfusion Monitoring System]\n\n"
return text
class Tom(wx.Dialog):
def __init__(self, parent, id, title):
wx.Dialog.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(400, 420))
panel = wx.Panel(self, -1)
vbox = wx.BoxSizer(wx.HORIZONTAL)
vbox1 = wx.BoxSizer(wx.VERTICAL)
vbox2 = wx.BoxSizer(wx.VERTICAL)
self.message = get_main_screen_text()
self.write = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE, value=self.message)
System_Checkup = wx.Button(panel, 1, label='System_Checkup')
Open_the_Web = wx.Button(panel, 1, label=' Open_the_Web ')
Help_Desk = wx.Button(panel, 1, label=' Help_Desk ')
Exit = wx.Button(panel, 1, label=' …Run Code Online (Sandbox Code Playgroud) 我想要一个像这样的布局
框架内部有一个主面板,左侧和右侧有空白填充,另一个子面板位于中间。位于子面板顶部的静态文本元素,更改窗口大小时应正确换行。
我的代码片段如下所示
import wx
class MyPanel(wx.Panel):
def __init__(self, parent):
super(MyPanel, self).__init__(parent)
self.hsizer = wx.BoxSizer()
self.hsizer.AddStretchSpacer()
self.panel = wx.Panel(self)
self.panel.SetSize((350, -1))
self.vsizer = wx.BoxSizer(wx.VERTICAL)
label = (
"This is a long scentence that I want it wrapped properly, "
"but it doesn't seem to work at work. "
"I prefer if you guys can give any sugeestions or help. "
"For Long Long Long Long Long scentence."
)
style = wx.ALIGN_LEFT
self.static_text = wx.StaticText(self, label=label, style=style)
self.vsizer.Add(self.static_text, flag=wx.EXPAND | wx.ALL …Run Code Online (Sandbox Code Playgroud) 如果 a 中子项的大小发生wx.BoxSizer变化,则 boxsizer 不会重新布局:
import wx
class MyButton(wx.Button):
def __init__(self, parent):
wx.Button.__init__(self, parent, -1, style=wx.SUNKEN_BORDER, label="ABC")
self.Bind(wx.EVT_BUTTON, self.OnClick)
def OnClick(self, event):
self.SetSize((200, 200))
self.SetSizeHints(200, 200)
class MyFrame(wx.Frame):
def __init__(self, parent, ID, title):
wx.Frame.__init__(self, parent, ID, title, size=(300, 250))
self.button = MyButton(self)
button2 = wx.Button(self, -1, style=wx.SUNKEN_BORDER, label="DEF")
# self.button.Bind(wx.EVT_SIZE, self.OnButtonResize)
box = wx.BoxSizer(wx.HORIZONTAL)
box.Add(self.button, 1, wx.EXPAND)
box.Add(button2, 1, wx.EXPAND)
self.SetAutoLayout(True)
self.SetSizer(box)
self.Layout()
def OnButtonResize(self, event):
event.Skip()
self.Layout()
app = wx.App()
frame = MyFrame(None, -1, "Sizer Test")
frame.Show() …Run Code Online (Sandbox Code Playgroud) 如果通过wxpython创建一个框架并更改staticText的内容,对齐方式将被初始化。我怎么解决这个问题?我想再对齐一下。
我必须安装wxPython。
我有,
从 /usr/local/lib/python3.7/site-packages/pip (python 3.7) 我运行命令,
pip3 install wxPython
Run Code Online (Sandbox Code Playgroud)
它通过以下错误:
检查 /tmp/pip-install-mjeu3aw7/wxpython/bin/waf-2.0.8...“/usr/local/bin/python3.7”/tmp/pip-install-mjeu3aw7/wxpython/bin/waf- 2.0.8 --wx_config=/tmp/pip-install-mjeu3aw7/wxpython/build/wxbld/gtk3/wx-config --gtk3 --python="/usr/local/bin/python3.7" --out= build/waf/3.7/gtk3 配置构建 将顶部设置为:/tmp/pip-install-mjeu3aw7/wxpython 设置为:/tmp/pip-install-mjeu3aw7/wxpython/build/waf/3.7/gtk3 检查“gcc” (C 编译器):/usr/bin/gcc 检查“g++”(C++ 编译器):/usr/bin/g++ 检查程序“python”:/usr/local/bin/python3.7 检查 python 版本 >= 2.7.0:3.7.3 python-config:/usr/local/bin/python3.7-config 向 python-config 询问 pyembed '--cflags --libs --ldflags' 标志:是 测试 pyembed 配置:是 询问 python -config for pyext '--cflags --libs --ldflags' 标志:是 测试 pyext 配置:无法构建 python 扩展 配置失败(完整登录 /tmp/pip-install-mjeu3aw7/wxpython/build/waf/3.7 /gtk3/config.log) 命令 '"/usr/local/bin/python3.7" /tmp/pip-install-mjeu3aw7/wxpython/bin/waf-2.0.8 --wx_config=/tmp/pip-install- mjeu3aw7/wxpython/build/wxbld/gtk3/wx-config --gtk3 --python="/usr/local/bin/python3.7" --out=build/waf/3.7/gtk3 配置构建'失败并退出代码1. …
我是 GNU Radio 的新手,专注于使用 GretScott 网站进行培训。
我运行的是 Windows 10。我从官方网站安装了 3.7.13.5/v1.6 ,发现缺少块。我决定卸载并安装3.8.0.0/v1.7
安装进行得很顺利,尽管我还注意到启动后命令提示符中出现一条消息:
WARNING:gnuradio.grc.core.platform:Slow YAML loading (libyaml not available)
<<< Welcome to GNU Radio Companion 3.8.0.0 >>>
Block paths:
C:\Program Files\GNURadio-3.8\share\gnuradio\grc\blocks
Run Code Online (Sandbox Code Playgroud)
我没有多想,就开始在 Companion 中翻找。我注意到最初缺少的块现在可用了。然而,我不再有任何 WX 块了。
有没有办法可以将这些块下载为 .yml 并将它们放置在块路径中?
我尝试从github 的链接安装 PyYAML然后运行:
python setup.py install
Run Code Online (Sandbox Code Playgroud)
我也跑了:
pip install -U wxPython
Run Code Online (Sandbox Code Playgroud)
两次尝试都没有运气,WX 块仍然丢失,并且我仍然在命令提示符上收到(libyaml 不可用)消息。
我正在使用PIL(python图像库)裁剪非常大的图像并将裁剪区域呈现给界面.我遇到的问题是这个过程花了太长时间.当用户点击图像进行裁剪时,图像需要很长时间才能显示在我附加的sizer上.
我尝试过这两种方式:首先我尝试将裁剪区域作为图像保存到磁盘,然后将其加载到sizer中.第二次尝试是创建一个空图像并将pil图像转换为wx图像并将其加载到sizer上.让我感到惊讶的是,第一种写入磁盘的方法比在内存中管理磁盘的第二种方法感觉更快.以下是代码示例:
第一种方法:
area = image_object.crop(self.cropxy)
area.save(CROP_IMAGE, 'jpeg')
crop_image = wx.Image(CROP_IMAGE, wx.BITMAP_TYPE_JPEG).ConvertToBitmap()
crop_bitmap = wx.StaticBitmap(self.crop_panel, bitmap=crop_image, name="Cropped Image")
crop_bitmap.CenterOnParent()
crop_bitmap.Refresh()
Run Code Online (Sandbox Code Playgroud)
第二种方法:
area = image_object.crop(self.cropxy)
image = wx.EmptyImage(area.size[0], area.size[1])
image.SetData(area.convert("RGB").tostring())
crop_image = wx.BitmapFromImage(image)
crop_bitmap = wx.StaticBitmap(self.crop_panel, bitmap=crop_image, name="Cropped Image")
crop_bitmap.CenterOnParent()
crop_bitmap.Refresh()
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来使图像现在显示得如此缓慢?
如何在屏幕分辨率变化时自动调整wxPython帧大小?
实际上,我刚刚编写了一个wxPython应用程序,目前帧大小是固定的.由于此应用程序/帧大小在某些屏幕分辨率上非常大.那么,如何根据屏幕分辨率大小自动调整大小/调整?
问候,
有一些人吗?我有一些关于wxpython的问题,我可以使用没有框架的面板吗?