wxPython使用窗口
2013-06-10 22:43
531 查看
使用窗口
Frames
Windows
Controls/Widgets
Sizers
Validators
在本节中,我们将呈现方式与windows wxPython交易及其内容,包括构建输入表单和使用各种小部件/控制。我们要建立一个小程序来计算价格的引用。如果你已经是一个有经验的GUI开发人员,这将是容易的。
概览
可见的布局元素
在一个框架中,您将使用大量的wxWindow子类来充实框架的内容。这里有一些更常见的元素,你可能想要放到你的框架:
A wx.MenuBar, 沿着你的窗口最上面放置菜单
A wx.StatusBar, 您的框架显示状态消息
A wx.ToolBar, 一个工具栏
wx.Control的子类. 这些都是对象,它代表的用户界面小部件 wx.Control 包括 wx.Button, wxStaticText, wx.TextCtrl and wx.ComboBox.
A wx.Panel,这是一个窗口来放置wx.Control 对象.
wx.Frame包括了:wxMenuBar与两个wxPanel
注意:
1.你可以手动位置每个元素通过指定它的确切父窗口内的像素坐标。因为不同的字体大小,等等,在平台之间,这个选项通常不推荐
2.你可以使用wx.LayoutConstraints,尽管这些都是相当复杂的使用
3.你可以使用类似Delphi的LayoutAnchors,它使wx.LayoutConstraints变得容易。
4.你可以使用其中一个wxSizer子类。
那我们来看看Sizer,它能做什么?
1.对于每个视觉元素计算出一个合适的大小
2.按照一定的规律定位元素
3.动态调整和/或重新定位元素
一些更常见的类型的sizer包括:
wx.BoxSizer, 负责安排视觉要素在一行的水平或垂直.
wx.GridSizer, 网格状结构.
wx.FlexGridSizer, GridSizer之外,它允许更灵活的布局的视觉元素.
注意:上面的例子并没有摆出了六个按钮到两行三列每个-要做到这一点,你应该使用一个wxGridSizer。
在接下来的例子中,我们使用两个嵌套sizer,主要有垂直布局和嵌入一个与水平布局:
[python]
view plaincopy
'''''
Created on 2012-6-30
@author: Administrator
'''
import os
import wx
class MainWindow(wx.Frame):
def __init__(self,parent,title):
self.dirname = ''
wx.Frame.__init__(self,parent,title=title,size=(500,350))
self.control = wx.TextCtrl(self,style=wx.TE_MULTILINE)
self.CreateStatusBar()
filemenu = wx.Menu()
menuOpen = filemenu.Append(wx.ID_OPEN,"&Open","Open a file to edit")
menuAbout = filemenu.Append(wx.ID_ABOUT,"&About","about this program")
menuExit = filemenu.Append(wx.ID_EXIT,"E&xit","close this program")
menuBar = wx.MenuBar()
menuBar.Append(filemenu,"&File")
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.OnOpen, menuOpen)
self.Bind(wx.EVT_MENU, self.OnAbout, menuAbout)
self.Bind(wx.EVT_MENU, self.OnExit, menuExit)
self.sizer2 = wx.BoxSizer(wx.HORIZONTAL)
self.buttons = []
for i in range(0,6):
self.buttons.append(wx.Button(self,-1,"Button &" + str(i)))
self.sizer2.Add(self.buttons[i],1,wx.EXPAND)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.control,1,wx.EXPAND)
self.sizer.Add(self.sizer2,0,wx.EXPAND)
self.SetSizer(self.sizer)
self.SetAutoLayout(1)
self.sizer.Fit(self)
self.Show()
def OnOpen(self,e):
dlg = wx.FileDialog(self,"choose a file",self.dirname,"","*.*",wx.OPEN)
if dlg.ShowModal() == wx.ID_OK:
self.filename = dlg.GetFilename()
self.dirname = dlg.GetDirectory()
f = open(os.path.join(self.dirname,self.filename),'r')
self.control.SetValue(f.read())
f.close()
dlg.Destroy()
def OnAbout(self,e):
dlg = wx.MessageDialog(self,"A sample editor \n in wxPython","About samll Editor")
dlg.ShowModal()
dlg.Destroy()
def OnExit(self,e):
self.Close()
app = wx.App(False)
frame = MainWindow(None,"Small Editor")
app.MainLoop()
Frames
Windows
Controls/Widgets
Sizers
Validators
在本节中,我们将呈现方式与windows wxPython交易及其内容,包括构建输入表单和使用各种小部件/控制。我们要建立一个小程序来计算价格的引用。如果你已经是一个有经验的GUI开发人员,这将是容易的。
概览
可见的布局元素
在一个框架中,您将使用大量的wxWindow子类来充实框架的内容。这里有一些更常见的元素,你可能想要放到你的框架:
A wx.MenuBar, 沿着你的窗口最上面放置菜单
A wx.StatusBar, 您的框架显示状态消息
A wx.ToolBar, 一个工具栏
wx.Control的子类. 这些都是对象,它代表的用户界面小部件 wx.Control 包括 wx.Button, wxStaticText, wx.TextCtrl and wx.ComboBox.
A wx.Panel,这是一个窗口来放置wx.Control 对象.
wx.Frame包括了:wxMenuBar与两个wxPanel
注意:
1.你可以手动位置每个元素通过指定它的确切父窗口内的像素坐标。因为不同的字体大小,等等,在平台之间,这个选项通常不推荐
2.你可以使用wx.LayoutConstraints,尽管这些都是相当复杂的使用
3.你可以使用类似Delphi的LayoutAnchors,它使wx.LayoutConstraints变得容易。
4.你可以使用其中一个wxSizer子类。
那我们来看看Sizer,它能做什么?
1.对于每个视觉元素计算出一个合适的大小
2.按照一定的规律定位元素
3.动态调整和/或重新定位元素
一些更常见的类型的sizer包括:
wx.BoxSizer, 负责安排视觉要素在一行的水平或垂直.
wx.GridSizer, 网格状结构.
wx.FlexGridSizer, GridSizer之外,它允许更灵活的布局的视觉元素.
注意:上面的例子并没有摆出了六个按钮到两行三列每个-要做到这一点,你应该使用一个wxGridSizer。
在接下来的例子中,我们使用两个嵌套sizer,主要有垂直布局和嵌入一个与水平布局:
[python]
view plaincopy
'''''
Created on 2012-6-30
@author: Administrator
'''
import os
import wx
class MainWindow(wx.Frame):
def __init__(self,parent,title):
self.dirname = ''
wx.Frame.__init__(self,parent,title=title,size=(500,350))
self.control = wx.TextCtrl(self,style=wx.TE_MULTILINE)
self.CreateStatusBar()
filemenu = wx.Menu()
menuOpen = filemenu.Append(wx.ID_OPEN,"&Open","Open a file to edit")
menuAbout = filemenu.Append(wx.ID_ABOUT,"&About","about this program")
menuExit = filemenu.Append(wx.ID_EXIT,"E&xit","close this program")
menuBar = wx.MenuBar()
menuBar.Append(filemenu,"&File")
self.SetMenuBar(menuBar)
self.Bind(wx.EVT_MENU, self.OnOpen, menuOpen)
self.Bind(wx.EVT_MENU, self.OnAbout, menuAbout)
self.Bind(wx.EVT_MENU, self.OnExit, menuExit)
self.sizer2 = wx.BoxSizer(wx.HORIZONTAL)
self.buttons = []
for i in range(0,6):
self.buttons.append(wx.Button(self,-1,"Button &" + str(i)))
self.sizer2.Add(self.buttons[i],1,wx.EXPAND)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.control,1,wx.EXPAND)
self.sizer.Add(self.sizer2,0,wx.EXPAND)
self.SetSizer(self.sizer)
self.SetAutoLayout(1)
self.sizer.Fit(self)
self.Show()
def OnOpen(self,e):
dlg = wx.FileDialog(self,"choose a file",self.dirname,"","*.*",wx.OPEN)
if dlg.ShowModal() == wx.ID_OK:
self.filename = dlg.GetFilename()
self.dirname = dlg.GetDirectory()
f = open(os.path.join(self.dirname,self.filename),'r')
self.control.SetValue(f.read())
f.close()
dlg.Destroy()
def OnAbout(self,e):
dlg = wx.MessageDialog(self,"A sample editor \n in wxPython","About samll Editor")
dlg.ShowModal()
dlg.Destroy()
def OnExit(self,e):
self.Close()
app = wx.App(False)
frame = MainWindow(None,"Small Editor")
app.MainLoop()
相关文章推荐
- 属性窗口开发--CMFCPropertyGridCtrl的使用
- Java基础之创建窗口——使用网格布局管理器(TryGridLayout)
- jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
- (四)EasyUI 使用——form表单2 & window窗口
- 如何使用wxPython设计gui
- 使用C++封装窗口消息映射
- UIDebuggingInformationOverlay调试信息窗口的使用
- 在iframe中优雅地使用父窗口中的$
- cmd窗口中cd命令的使用
- 使用类前置声明的好处-结合Qt 4一个主窗口实例讲解
- 使用WindowManager添加View——悬浮窗口的基本原理
- ATL与WTL中CString的使用, 利用ATLCString获得窗口的文字.
- VS2005 命令窗口的使用
- Jquery实现WIN7-AeroWindow窗口效果插件使用
- 使用wxPython制作GUI小工具
- css3 - 弹性盒布局 - 1.使用自适应窗口的弹性盒布局
- 弹出小窗口,PopupWindow的使用
- 将命令窗口进行到底——VS2012中使用NUGet的高效办法
- 使用electron实现百度网盘悬浮窗口功能的示例代码
- 如何使用SQL窗口子句减少语法开销