标签: wxpython

在wx.Notebook上的Panel上展开wx.GridBagSizer的子元素

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

python layout wxwidgets wxpython

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

WxPython[TextCtrl] :使用 TextCtrl 函数将光标定位到文本末尾的方式。

很高兴见到你。我在使用 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)

python wxpython textctrl cursor

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

面板中的填充和 wxpython 中的静态文本换行

我想要一个像这样的布局

在此输入图像描述

框架内部有一个主面板,左侧和右侧有空白填充,另一个子面板位于中间。位于子面板顶部的静态文本元素,更改窗口大小时应正确换行。

我的代码片段如下所示

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)

python layout user-interface wxwidgets wxpython

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

如果子项调整大小,则重新布局 wx.BoxSizer

如果 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 boxsizer python-2.7

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

wxPython:如何在 SetLabelText 之后更改对齐方式 StaticText

如果通过wxpython创建一个框架并更改staticText的内容,对齐方式将被初始化。我怎么解决这个问题?我想再对齐一下。

python wxpython wxformbuilder

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

无法使用 pip3 在带有 python3.7 的 Ubuntu 上安装 wxPython

我必须安装wxPython

我有,

  • 乌班图18.10
  • python版本:Python 3.7.3
  • pip3版本:pip 19.0.3

从 /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. …

wxpython python-3.7

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

Windows 版 GNC 中缺少 WX GUI FFT 接收器

我是 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 不可用)消息。

wxpython gnu gnuradio libyaml gnuradio-companion

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

加快图像显示

我正在使用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 image python-imaging-library

0
推荐指数
1
解决办法
1955
查看次数

自动调整wxPython帧大小

如何在屏幕分辨率变化时自动调整wxPython帧大小?

实际上,我刚刚编写了一个wxPython应用程序,目前帧大小是固定的.由于此应用程序/帧大小在某些屏幕分辨率上非常大.那么,如何根据屏幕分辨率大小自动调整大小/调整?

问候,

wxpython

0
推荐指数
1
解决办法
3804
查看次数

我可以在wxpython中使用没有框架的面板吗?

有一些人吗?我有一些关于wxpython的问题,我可以使用没有框架的面板吗?

python wxwidgets wxpython

0
推荐指数
1
解决办法
555
查看次数