【问题标题】:Shows WxPython widgets on the Screen在屏幕上显示 WxPython 小部件
【发布时间】:2013-11-05 18:31:18
【问题描述】:

目前我正在尝试在 Windows Siete 32 位下使用 Wx Python 2.9.5.0 和 Python 2.7.3 制作 GUI。我是一个屏幕阅读器用户,对于我来说,屏幕阅读器会读取我在代码中指定的两个控件,但一位朋友说在屏幕上,她看不到其中一个控件。

似乎启用屏幕阅读器后,此软件可以读取所有小部件,但我有兴趣在屏幕上显示小部件。

有人知道是否存在在屏幕上显示所有小部件的方法吗?

以下是代码片段:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import wx
class main(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "Testing an app")
        self.Maximize()
        panel = wx.Panel(self, -1)
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        listbox = wx.BoxSizer(wx.HORIZONTAL)
        textbox = wx.BoxSizer(wx.HORIZONTAL)
        textList = wx.StaticText(panel, -1, "Text1")
        self.listBox = wx.ListBox(self, -1, choices=["Some large text", "another large text"], size=(400, 400))
        text = wx.StaticText(panel, -1, "Content")
        self.text = wx.TextCtrl(panel, -1, "", style=wx.TE_READONLY|wx.TE_MULTILINE, size=(500, 500))
        listbox.Add(textList)
        listbox.Add(self.listBox)
        textbox.Add(text)
        textbox.Add(self.text)
        sizer.Add(listbox)
        sizer.Add(textbox)
        self.SetSizer(sizer)
  # Some stuff here...
if __name__ == "__main__":
    app = wx.App()
    frame = main().Show()
    app.MainLoop()

【问题讨论】:

    标签: wxpython wxwidgets


    【解决方案1】:

    您的 ListBox 是框架而不是面板的父级,并且在框架而不是面板上设置了大小调整器。

    import wx
    
    class main(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None, -1, "Testing an app")
            self.Maximize()
            panel = wx.Panel(self, -1)
            textList = wx.StaticText(panel, -1, "Text1")
            self.listBox = wx.ListBox(panel, -1, choices=["Some large text", "another large text"], size=(400, 400))
            text = wx.StaticText(panel, -1, "Content")
            self.text = wx.TextCtrl(panel, -1, "", style=wx.TE_READONLY|wx.TE_MULTILINE, size=(500, 500))
    
            listbox = wx.BoxSizer(wx.HORIZONTAL)
            listbox.Add(textList)
            listbox.Add(self.listBox)
    
            textbox = wx.BoxSizer(wx.HORIZONTAL)
            textbox.Add(text)
            textbox.Add(self.text)
    
            sizer = wx.BoxSizer(wx.HORIZONTAL)
            sizer.Add(listbox)
            sizer.Add(textbox)
            panel.SetSizer(sizer)
      # Some stuff here...
    if __name__ == "__main__":
        app = wx.App()
        frame = main().Show()
        app.MainLoop()
    

    【讨论】:

    • 谢谢!它起作用了,现在小部件显示正确,只有我需要为每个控件找到一个大小。奇怪的是,屏幕阅读器无法检测到小部件何时未显示在主窗口上。
    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 2020-06-29
    • 1970-01-01
    相关资源
    最近更新 更多