py_w 0000000000000 2022-03-10 16:57 采纳率: 89.5%
浏览 15
已结题

wxpython灵活窗口和元素控制

窗口上创建菜单,子菜单实现退出

将现有数据库输出部署到左边区域

  • 写回答

1条回答 默认 最新

  • 陈年椰子 2022-03-10 17:14
    关注

    菜单退出就是要绑定事件,
    数据显示, 可以考虑用多行文本
    大概界面的写法如下,供参考

    
    # encoding: utf-8
    """
    @author: 陈年椰子
    @contact: hndm@qq.com
    @version: 1.0
    @project:test 
    @file: wx_gui7.py
    @time: 2022-3-9 9:36
    
    说明
    """
    
    import wx
    
    class MainWindow(wx.Frame):
        def __init__(self, parent, title, size=(400,200)):
            wx.Frame.__init__(self, parent=parent, title=title, size=size)
    
    
            self.Center()  # 设置窗口居中
            # 放一个面板,用于布局其他控件
            panel = wx.Panel(parent=self)
    
            # 定义相关控件
            # btn1 = wx.Button(panel, label="左")
            btn2 = wx.Button(panel, label="右1")
            btn3 = wx.Button(panel, label="右2 自动扩展")
            text1 = wx.TextCtrl(panel, size=(300,100),
                                  style=wx.TE_MULTILINE)
            text2 = wx.TextCtrl(panel)
            text3 = wx.TextCtrl(panel)
            text3.SetValue("自动扩展")
            text1.SetValue(str)
    
            # 创建右边子区域
            vbox_right_1 = wx.BoxSizer(wx.VERTICAL)
            vbox_right_2 = wx.BoxSizer(wx.VERTICAL)
    
            # 右边子区域增加控件
            vbox_right_1.Add(text2, proportion=0, flag=wx.ALL, border=10)
            vbox_right_1.Add(btn2, proportion=0, flag=wx.ALL, border=10)
    
            vbox_right_2.Add(text3, proportion=1, flag=wx.ALL| wx.EXPAND, border=10)
            vbox_right_2.Add(btn3, proportion=1, flag=wx.ALL| wx.EXPAND, border=10)
    
    
            # 创建右grid,垂直缝隙,水平缝隙
            gridsizer_right = wx.GridSizer(cols=1, rows=2, vgap=10, hgap=5)
            gridsizer_right.AddMany([(vbox_right_1, 1,wx.ALL |  wx.EXPAND), (vbox_right_2, 1, wx.ALL | wx.EXPAND)])
    
            # 创建区域
            vbox1 = wx.BoxSizer(wx.VERTICAL)
            # 左边区域增加控件
            vbox1.Add(text1, proportion=1, flag=wx.ALL, border=10)
            # vbox1.Add(btn1, proportion=0, flag=wx.ALL, border=10)
    
            vbox2 = wx.BoxSizer(wx.VERTICAL)
            vbox2.Add(gridsizer_right, proportion=1, flag=wx.ALL | wx.EXPAND, border=15)
    
    
            # 创建主grid,垂直缝隙,水平缝隙
            gridsizer = wx.GridSizer(cols=2, rows=1, vgap=10, hgap=5)
            gridsizer.AddMany([(vbox1, 1, wx.EXPAND), (vbox2, 1, wx.ALL | wx.EXPAND) ])
    
    
            panel.SetSizer(gridsizer)
    
    
            # 菜单栏
            file_menu = wx.Menu()
            file_menu.Append(wx.ID_SAVE, '保存', '将会保存内容')
            gexit = file_menu.Append(wx.ID_EXIT, '退出', '退出')
            window_menu = wx.MenuBar()
            window_menu.Append(file_menu, '文件')
            self.SetMenuBar(window_menu)
            self.Bind(wx.EVT_MENU,self.GuiExit,gexit)
    
            # 创建状态栏
            self.statusbar = self.CreateStatusBar()
            self.statusbar.SetFieldsCount(3)
            self.statusbar.SetStatusWidths([-1, -2, -3])
            self.statusbar.SetStatusText(u"数据1" , 0)
            self.statusbar.SetStatusText(u"数据2:"  , 1)
            self.statusbar.SetStatusText(u"数据3:"  , 2)
    
            self.Show(True)
        def GuiExit(self,e):
            self.Close()
    
    # 这里替换掉你的数据
    str = "122\n1231312\ndsjfsdf"
    
    app = wx.App()
    window = MainWindow(None, '测试')
    
    app.MainLoop()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下: