pythongui界面实例_wxPython:python首选的GUI库实例分享(5)

201910051411555.png

AUI布局

Advanced User Interface,简称AUI,是 wxPython 的子模块,使用 AUI 可以方便地开发出美观、易用的用户界面。从2.8.9.2版本之后,wxPython 增加了一个高级通用部件库 Advanced Generic Widgets,简称 AGW 库。我发先 AGW 库也提供了 AUI 模块 wx.lib.agw.aui,而 wx.aui 也依然保留着。

AUI布局可以概括为以下四步:

创建一个布局管理器:mgr = aui.AuiManager()

告诉主窗口由mgr来管理界面:mgr.SetManagedWindow()

添加界面上的各个区域:mgr.AddPane()

更新界面显示:mgr.Update()

下面的代码演示了如何使用AUI布局管理器创建和管理窗口界面。

#-*- coding: utf-8 -*-

import wx

import win32api

import sys, os

import wx.lib.agw.aui as aui

APP_TITLE = u'使用AUI布局管理器'

APP_ICON = 'res/python.ico'

class mainFrame(wx.Frame):

'''程序主窗口类,继承自wx.Frame'''

id_open = wx.NewId()

id_save = wx.NewId()

id_quit = wx.NewId()

id_help = wx.NewId()

id_about = wx.NewId()

def __init__(self, parent):

'''构造函数'''

wx.Frame.__init__(self, parent, -1, APP_TITLE)

self.SetBackgroundColour(wx.Colour(224, 224, 224))

self.SetSize((800, 600))

self.Center()

if hasattr(sys, "frozen") and getattr(sys, "frozen") == "windows_exe":

exeName = win32api.GetModuleFileName(win32api.GetModuleHandle(None))

icon = wx.Icon(exeName, wx.BITMAP_TYPE_ICO)

else :

icon = wx.Icon(APP_ICON, wx.BITMAP_TYPE_ICO)

self.SetIcon(icon)

self.tb1 = self._CreateToolBar()

self.tb2 = self._CreateToolBar()

self.tbv = self._CreateToolBar('V')

p_left = wx.Panel(self, -1)

p_center0 = wx.Panel(self, -1)

p_center1 = wx.Panel(self, -1)

p_bottom = wx.Panel(self, -1)

btn = wx.Button(p_left, -1, u'切换', pos=(30,200), size=(100, -1))

btn.Bind(wx.EVT_BUTTON, self.OnSwitch)

text0 = wx.StaticText(p_center0, -1, u'我是第1页', pos=(40, 100), size=(200, -1), style=wx.ALIGN_LEFT)

text1 = wx.StaticText(p_center1, -1, u'我是第2页', pos=(40, 100), size=(200, -1), style=wx.ALIGN_LEFT)

self._mgr = aui.AuiManager()

self._mgr.SetManagedWindow(self)

self._mgr.AddPane(self.tb1,

aui.AuiPaneInfo().Name("ToolBar1").Caption(u"工具条").ToolbarPane().Top().Row(0).Position(0).Floatable(False)

)

self._mgr.AddPane(self.tb2,

aui.AuiPaneInfo().Name("ToolBar2").Caption(u"工具条").ToolbarPane().Top().Row(0).Position(1).Floatable(True)

)

self._mgr.AddPane(self.tbv,

aui.AuiPaneInfo().Name("ToolBarV").Caption(u"工具条").ToolbarPane().Right().Floatable(True)

)

self._mgr.AddPane(p_left,

aui.AuiPaneInfo().Name("LeftPanel").Left().Layer(1).MinSize((200,-1)).Caption(u"操作区").MinimizeButton(True).MaximizeButton(True).CloseButton(True)

)

self._mgr.AddPane(p_center0,

aui.AuiPaneInfo().Name("CenterPanel0").CenterPane().Show()

)

self._mgr.AddPane(p_center1,

aui.AuiPaneInfo().Name("CenterPanel1").CenterPane().Hide()

)

self._mgr.AddPane(p_bottom,

aui.AuiPaneInfo().Name("BottomPanel").Bottom().MinSize((-1,100)).Caption(u"消息区").CaptionVisible(False).Resizable(True)

)

self._mgr.Update()

def _CreateToolBar(self, d='H'):

'''创建工具栏'''

bmp_open = wx.Bitmap('res/open_16.png', wx.BITMAP_TYPE_ANY)

bmp_save = wx.Bitmap('res/save_16.png', wx.BITMAP_TYPE_ANY)

bmp_help = wx.Bitmap('res/help_16.png', wx.BITMAP_TYPE_ANY)

bmp_about = wx.Bitmap('res/about_16.png', wx.BITMAP_TYPE_ANY)

if d.upper() in ['V', 'VERTICAL']:

tb = aui.AuiToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, agwStyle=aui.AUI_TB_TEXT|aui.AUI_TB_VERTICAL)

else:

tb = aui.AuiToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, agwStyle=aui.AUI_TB_TEXT)

tb.SetToolBitmapSize(wx.Size(16, 16))

tb.AddSimpleTool(self.id_open, u'打开', bmp_open, u'打开文件')

tb.AddSimpleTool(self.id_save, u'保存', bmp_save, u'保存文件')

tb.AddSeparator()

tb.AddSimpleTool(self.id_help, u'帮助', bmp_help, u'帮助')

tb.AddSimpleTool(self.id_about, u'关于', bmp_about, u'关于')

tb.Realize()

return tb

def OnSwitch(self, evt):

'''切换信息显示窗口'''

p0 = self._mgr.GetPane('CenterPanel0')

p1 = self._mgr.GetPane('CenterPanel1')

p0.Show(not p0.IsShown())

p1.Show(not p1.IsShown())

self._mgr.Update()

class mainApp(wx.App):

def OnInit(self):

self.SetAppName(APP_TITLE)

self.Frame = mainFrame(None)

self.Frame.Show()

return True

if __name__ == "__main__":

app = mainApp()

app.MainLoop()

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'aaa.ui' # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! import sys, os from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5 import QtCore, QtGui, QtWidgets class U_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1204, 836) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.tableWidget = QtWidgets.QTableWidget(self.centralwidget) self.tableWidget.setGeometry(QtCore.QRect(80, 240, 1041, 371)) self.tableWidget.setAutoScrollMargin(9) self.tableWidget.setRowCount(9) self.tableWidget.setColumnCount(8) self.tableWidget.setObjectName("tableWidget") item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(6, item) item = Q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值