wxpython grid用法

合集下载

grid用法

grid用法

grid用法Grid,翻译成中文是网格,它在日常生活中随处可见,我们常用的街道、城市建筑物、电脑程序等都与Grid有着紧密的联系。

那么Grid到底是什么呢?怎么使用它呢?一、概述Grid最简单的说法就是将平面分割成一个个规则的方格,方便我们进行布局和编辑。

在电脑程序方面,常见的网格包括表格、网页布局、图像处理中的像素网格等等。

在城市规划方面,规划中的道路和建筑物也是按照一定的网格布局进行规划的。

Grid可以让我们的设计更加规整和有组织,并且容易实施。

而且,基于网格的制作方式还可以节省时间和成本。

二、电脑程序中的Grid1.网页布局网页设计中,网页中的元素往往是“盒子”,而这些“盒子”都是按照一个网格系统排布的。

在CSS设置中,就可以通过grid属性来设置整个网页的布局,还可以设置元素的大小和位置等等。

通过使用网格布局,我们就可以在不同大小的屏幕上实现响应式设计,提高用户体验。

2.表格表格也是一种Grid,它将网页分割成水平和垂直的方格。

在制作数据报表等方面非常有用。

在Excel中,也通过网格来呈现数据和表格。

不仅如此,在电子邮箱、网站后台等方面都可以使用Grid来制作布局。

3.图像处理图像处理软件中也采用了像素的网格模式,比如Photoshop,它使用像素网格来呈现图片,方便我们进行切图和编辑。

此外,通过网格还可以排版一些图文混排的文档,保证版式的整齐和一致性。

三、城市规划中的Grid城市规划中的Grid,指的是将城市规划按照一定的网格布局进行划分。

这种划分方式可以提高城市的规划和建设效率,规范和统一城市的道路和建筑物的规划。

美国的纽约市就是一个被Grid 规划所主导的城市,整个城市采用了集合体网格布局和十字路口的设计,使其看起来自然、谨慎却又清晰明了。

四、其他用途除此之外,Grid还可以在图书设计、海报设计、游戏制作等方面发挥作用。

在图书和海报设计中,Grid可以帮助我们方便快捷地进行版面的排版和编辑;在游戏制作中,Grid可以统一各种元素的大小和位置,使得游戏流畅而不失美感。

wxPython布局管理(绝对布局与Sizer)

wxPython布局管理(绝对布局与Sizer)

wxPython布局管理(绝对布局与Sizer)转载⼀个典型的应⽤程序是由不同的部件。

这些⼩部件被放进容器部件。

⼀个程序员必须管理应⽤程序的布局。

这不是⼀项容易的任务。

在wxPython我们有两个选择。

*absolute positioning*sizersAbsolute Positioning绝对位置程序员指定位置和⼤⼩的每个⼩部件以像素为单位。

当你使⽤绝对定位,你必须了解⼀些事情。

1.如果你改变窗⼝⼤⼩,⼤⼩和位置的⼀个⼩部件不改变2.在各种平台上的应⽤程序看起来不同3.更改字体在您的应⽤程序可能会破坏布局4.如果你决定改变你的布局,你必须完全重做你的布局,这是繁琐⼜费时可能存在的情况下,我们可能使⽤绝对定位。

例如,我的教程。

我不想使⽰例太难了,所以我经常使⽤绝对定位来解释⼀个主题。

但是最重要的是,在现实世界的程序,程序员使⽤sizer。

在我们的例⼦中,我们有⼀个简单的⽂本编辑器⾻架。

如果我们调整窗⼝⼤⼩,因为我们希望wx.TextCtrl的⼤⼩不会改变。

[python]1. '''''2. Created on 2012-7-13.4. @author: Administrator5. '''6. import wx7. class Example(wx.Frame):8. def __init__(self,parent,title):9. super(Example,self).__init__(parent,title=title,size=(260,180))10. self.InitUI()11. self.Centre()12. self.Show()13. def InitUI(self):14. panel = wx.Panel(self, -1)15. menuBar = wx.MenuBar()16. filem = wx.Menu()17. editm = wx.Menu()18. helpm = wx.Menu()19.20. menuBar.Append(filem,"&File")21. menuBar.Append(editm,"&Edit")22. menuBar.Append(helpm,"&Help")23. self.SetMenuBar(menuBar)24.25. wx.TextCtrl(panel,pos=(3,3),size=(250,150))26. if __name__ == '__main__':27. app = wx.App()28. Example(None,title='Layout1')29. app.MainLoop()在上⾯的⽰例中,我们的位置⽂本控制在绝对坐标。

python中的widget用法 -回复

python中的widget用法 -回复

python中的widget用法-回复Python中的widget用法Widget是指用户界面(UI)中的各种元素,如按钮、文本框、复选框等,它们用于与用户进行交互。

在Python中,有多个库提供了丰富的widget功能,其中最常用的是Tkinter库。

本文将一步一步回答关于Python中的widget用法的问题,介绍如何创建、配置和使用不同类型的widget。

一、什么是widget?在软件开发中,widget是指用户界面上的可视化元素,用于与用户进行交互。

它们可以是按钮、文本框、标签、滑块等,用于获取用户输入、显示信息或执行某些操作。

widget通常有自己的属性和方法,可以通过编程来控制其行为和外观。

在Python中,widget是通过各种GUI库实现的。

Tkinter是Python 标准库中的一个GUI库,它提供了丰富的widget类和方法,用于创建和管理用户界面上的元素。

二、如何创建一个widget?在Tkinter中,创建一个widget的基本步骤如下:1. 导入Tkinter库首先,需要导入Tkinter库。

通过以下代码实现:pythonimport tkinter as tk2. 创建主窗口使用Tkinter库创建一个主窗口,并设置其标题和大小。

pythonroot = ()root.title("My Application")root.geometry("500x300")3. 创建widget在主窗口中,使用Tkinter提供的widget类来创建不同类型的widget。

例如,创建一个按钮:pythonbutton = tk.Button(root, text="Click Me!")在上述代码中,`tk.Button`表示创建一个按钮类型的widget,`root`表示按钮父窗口为主窗口,`text`参数用于设置按钮上显示的文本。

python图形开发GUI库wxpython使用方法详解

python图形开发GUI库wxpython使用方法详解

python图形开发GUI库wxpython使⽤⽅法详解⼀、python gui(图形化)模块介绍: Tkinter :是python最简单的图形化模块,总共只有14种组建 Pyqt :是python最复杂也是使⽤最⼴泛的图形化 Wx :是python当中居中的⼀个图形化,学习结构很清晰 Pywin :是python windows 下的模块,摄像头控制(opencv),常⽤于外挂制作⼆、wx模块的安装:C:\Users\Administrator> pip install wxpython三、图形化介绍四、wx主要组件介绍1、frame(窗⼝)参数:parent = None #⽗元素,假如为None,代表顶级窗⼝id = None #组件的标识,唯⼀,假如id为-1代表系统分配idtitle = None #窗⼝组件的名称pos = None #组件的位置,就是组件左上⾓点距离⽗组件或者桌⾯左和上的距离size = None #组件的尺⼨,宽⾼style = None #组件的样式name = None #组件的名称,也是⽤来标识组件的,但是⽤于传值2、TextCtrl(⽂本框)参数:parent = None #⽗元素,假如为None,代表顶级窗⼝id = None #组件的标识,唯⼀,假如id为-1代表系统分配idvalue = None #⽂本框当中的内容GetValue #获取⽂本框的值SetValue #设置⽂本框的值pos = None #组件的位置,就是组件左上⾓点距离⽗组件或者桌⾯左和上的距离size = None #组件的尺⼨,宽⾼style = None #组件的样式validator = None #验证name = None #组件的名称,也是⽤来标识组件的,但是⽤于传值3、Button(按钮)参数:parent = None #⽗元素,假如为None,代表顶级窗⼝id = None #组件的标识,唯⼀,假如id为-1代表系统分配idlable = None #按钮的标签pos = None #组件的位置,就是组件左上⾓点距离⽗组件或者桌⾯左和上的距离size = None #组件的尺⼨,宽⾼style = None #组件的样式validator = None #验证name = None #组件的名称,也是⽤来标识组件的,但是⽤于传值其它组件的参数类似4、创建窗⼝基础代码基本创建窗⼝代码说明:import wx #引⼊wx模块app = wx.App() #实例化⼀个主循环<br>frame = wx.Frame(None) #实例化⼀个窗⼝<br>frame.Show()#调⽤窗⼝展⽰功能<br>app.MainLoop()#启动主循环效果如下图:五、Gui编写简单实例实现如下⼀个GUI界⾯,在上⾯⽂本框中输⼊⽂本⽂件地址,点击“打开”按钮后将⽂本⽂件内容显⽰在下⾯的⽂本框中。

python grid 参数

python grid 参数

Python Grid 参数在Python编程语言中,Grid(网格)是一种常见的布局管理器,用于在图形用户界面(GUI)中创建和组织控件。

Grid参数是指在使用Grid布局管理器时,可以设置的各种参数,用于控制控件的位置、大小和对齐方式等。

1. Grid布局管理器简介Grid布局管理器是Python Tkinter库中常用的一种布局管理器,它以网格的形式将控件放置在窗口中。

使用Grid布局管理器,我们可以将窗口划分为行和列,然后将控件放置在相应的行和列中。

Grid布局管理器的主要优点是灵活性和可扩展性。

通过灵活地设置行和列的数量,我们可以轻松地调整控件的位置和大小,以适应不同的窗口尺寸和布局要求。

此外,Grid布局管理器还可以自动调整控件的大小,以适应窗口的变化。

2. 使用Grid布局管理器在使用Grid布局管理器时,我们需要先创建一个窗口对象,并将其设置为Grid布局。

然后,我们可以使用grid()方法将控件放置在窗口中的特定位置。

下面是一个简单的示例代码,演示了如何使用Grid布局管理器在窗口中放置两个按钮:import tkinter as tk# 创建窗口对象window = ()# 设置窗口为Grid布局window.grid()# 创建按钮控件button1 = tk.Button(window, text="Button 1")button2 = tk.Button(window, text="Button 2")# 将按钮控件放置在窗口中的特定位置button1.grid(row=0, column=0)button2.grid(row=0, column=1)# 进入主循环window.mainloop()在上述代码中,我们首先导入了tkinter模块,并创建了一个窗口对象window。

然后,我们通过调用grid()方法将窗口设置为Grid布局。

python图形开发GUI库wxpython使用方法详解

python图形开发GUI库wxpython使用方法详解

python图形开发GUI库wxpython使用方法详解wxPython是一个开源的跨平台图形开发库,基于wxWidgets。

它提供了丰富的图形界面组件和工具,可以用于创建各种类型的应用程序,从简单的小工具到复杂的桌面应用程序。

在本篇文章中,我们将详细介绍wxPython库的使用方法。

安装wxPython首先,我们需要安装wxPython库。

可以使用pip包管理器来安装wxPython:pip install wxPython创建一个简单的窗口下面是一个简单的示例程序,它创建一个带有“Hello World”文本的窗口。

import wxclass MyFrame(wx.Frame):def __init__(self):super(.__init__(None, title="Hello World")panel = wx.Panel(self)text = wx.StaticText(panel, label="Hello World", pos=(100, 50))app = wx.Appframe = MyFrameframe.Showapp.MainLoop运行这段代码后,将显示一个带有“Hello World”文本的窗口。

创建窗口要创建一个窗口,我们需要创建一个wx.Frame的实例。

frame = wx.Frame(parent, title)parent是窗口的父级窗口,如果没有父级窗口,可以将其设置为None。

title是窗口的标题。

创建子窗口和控件在窗口上添加子窗口和控件,可以使用wx.Panel。

我们可以在面板上添加文本,按钮,文本框等控件。

panel = wx.Panel(frame)text = wx.StaticText(panel, label="Hello World", pos=(100, 50))这个例子创建了一个面板和一个静态文本控件,将“Hello World”文本放置在(100, 50)的位置上。

Python中的wxPython的窗口与组件基础操作方法

Python中的wxPython的窗口与组件基础操作方法

Python中的wxPython的窗口与组件基础操作方法wxPython是一种开源的GUI(graphical user interface,图形用户界面)工具包,它是Python编程语言的一个扩展库。

通过使用wxPython,我们可以很方便地创建各种窗口和组件,来构建自己的用户界面。

本文将介绍wxPython窗口与组件基础操作方法。

一、窗口的创建在wxPython中,窗口是我们所见的最基本的组件,我们需要先创建窗口,才能向其中添加其他组件,例如按钮,文本框等。

我们可以通过代码创建窗口,代码如下:```pythonimport wxapp = wx.App()window = wx.Frame(None, title = '窗口标题', size = (800, 600))window.Show()app.MainLoop()```在代码中,我们首先导入wx模块,创建了一个应用程序app和一个窗口window。

wx.Frame()函数用于创建窗口,它有许多参数。

其中,第一个参数是指定父窗口,如果我们不需要父窗口,就使用None。

第二个参数是窗口的标题,第三个参数是窗口的大小。

二、组件的添加在创建窗口之后,我们可以向窗口中添加各种组件。

下面是一些最基本的wxPython组件。

1、按钮按钮是我们常用的基本组件之一,可以通过按钮来触发某些特定的事件。

我们可以使用wx.Button()函数来创建按钮,代码如下:```pythonimport wxapp = wx.App()window = wx.Frame(None, title = '窗口标题', size = (800, 600))button = wx.Button(window, label = '按钮标签', pos = (20, 20))window.Show()app.MainLoop()```在代码中,我们创建了一个按钮,它属于窗口window。

python图形化界面设计(wxpython)一布局管理

python图形化界面设计(wxpython)一布局管理

python图形化界面设计(wxpython)一布局管理Python图形化界面设计是通过使用不同的库来创建图形化用户界面,其中wxPython是一个流行的库之一、wxPython是在Python中使用wxWidgets库的绑定,它提供了一套广泛的用户界面控件和布局管理器来创建具有吸引力和交互性的应用程序。

布局管理器是一种用于在用户界面中定位和布置控件的机制。

它们允许开发者以一种灵活的方式定义组件之间的关系,以便根据不同的窗口尺寸和用户需求进行自适应调整。

wxPython提供了三种主要的布局管理器:BoxSizer、GridSizer和FlexGridSizer。

BoxSizer是最简单和最常用的布局管理器之一、它将控件放置在一个水平或垂直的框中,可以自动调整大小和位置。

例如,以下代码创建一个垂直BoxSizer,并在其中添加两个按钮:```pythonimport wxclass MyFrame(wx.Frame):def __init__(self, parent, title):super(.__init__(parent, title=title)panel = wx.Panel(self)sizer = wx.BoxSizer(wx.VERTICAL)button1 = wx.Button(panel, label="Button 1")button2 = wx.Button(panel, label="Button 2")sizer.Add(button1, 0, wx.ALL, 10)sizer.Add(button2, 0, wx.ALL, 10)panel.SetSizer(sizer)self.Showapp = wx.Appframe = MyFrame(None, "BoxSizer Example")app.MainLoop```GridSizer是另一种常用的布局管理器,可以将控件放置在网格中。

Python中的wxPython的界面布局与设计技巧

Python中的wxPython的界面布局与设计技巧

Python中的wxPython的界面布局与设计技巧wxPython是一种基于Python语言的GUI编程工具箱,提供了丰富的控件和功能,可用于创建各种类型的桌面应用程序。

在创建应用程序时,界面布局和设计是非常重要的,因为它们会影响应用程序的外观和用户体验。

本篇论文将探讨wxPython的界面布局与设计技巧。

一、界面布局1.使用SizerSizer是wxPython中的一个布局管理器,它可根据界面中的控件自动调整它们的大小和位置。

使用Sizer可以使界面布局更为简洁和自动化。

下面是一个示例代码,演示在一个框架中如何使用Sizer:```import wxclass MyFrame(wx.Frame):def __init__(self, parent, title):super().__init__(parent, title=title)self.InitUI()def InitUI(self):vbox = wx.BoxSizer(wx.VERTICAL)hbox1 = wx.BoxSizer(wx.HORIZONTAL)st1 = wx.StaticText(self, label='姓名:')hbox1.Add(st1, flag=wx.RIGHT, border=8)tc = wx.TextCtrl(self)hbox1.Add(tc, proportion=1)vbox.Add(hbox1, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)vbox.Add((-1, 10))hbox2 = wx.BoxSizer(wx.HORIZONTAL)st2 = wx.StaticText(self, label='年龄:')hbox2.Add(st2, flag=wx.RIGHT, border=8)spin = wx.SpinCtrl(self, value='0', min=0, max=100)hbox2.Add(spin)vbox.Add(hbox2, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)vbox.Add((-1, 10))hbox3 = wx.BoxSizer(wx.HORIZONTAL)st3 = wx.StaticText(self, label='性别:')hbox3.Add(st3, flag=wx.RIGHT, border=8)radio1 = wx.RadioButton(self, label='男',style=wx.RB_GROUP)hbox3.Add(radio1)radio2 = wx.RadioButton(self, label='女')hbox3.Add(radio2)vbox.Add(hbox3, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)vbox.Add((-1, 10))hbox4 = wx.BoxSizer(wx.HORIZONTAL)cb1 = wx.CheckBox(self, label='Python')hbox4.Add(cb1)cb2 = wx.CheckBox(self, label='Java')hbox4.Add(cb2, flag=wx.LEFT, border=10)cb3 = wx.CheckBox(self, label='C++')hbox4.Add(cb3, flag=wx.LEFT, border=10)vbox.Add(hbox4, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)vbox.Add((-1, 10))hbox5 = wx.BoxSizer(wx.HORIZONTAL)btn1 = wx.Button(self, label='确定')hbox5.Add(btn1)btn2 = wx.Button(self, label='取消', style=wx.LEFT, border=5)hbox5.Add(btn2)vbox.Add(hbox5, flag=wx.ALIGN_RIGHT|wx.RIGHT|wx.BOTTOM, border=10)self.SetSizer(vbox)self.Centre()self.Show()if __name__ == '__main__':app = wx.App()frame = MyFrame(None, title='Sizer布局')app.MainLoop()```上述代码创建了一个对话框,并使用了Sizer进行布局。

python中grid的用法

python中grid的用法

python中grid的用法
在python中,Grid是一种布局管理器,用于将Widgets排列成网格。

它允许您将Widgets放置在行和列中,根据需要调整它们的大小。

Grid方法接受两个参数,一个是行号,另一个是列号。

通过指定
这两个参数,可以将小部件放置在特定的网格单元中。

例如,
widget.grid(row=0, column=0)会将widget放置在第一行的第一列。

grid方法可以接受其他可选参数,例如sticky和padx/pady。

sticky参数用于指定程序当单元格比widget大时,widget应该如何
对齐。

padx/pady参数用于在单元格周围添加额外的空间。

Grid还支持行和列的权重,使您可以控制小部件如何在窗口大小
发生变化时调整大小。

例如,widget.grid(row=0, column=0,
sticky="nsew")将widget置于第一行第一列,并将其对齐方式设置为
在North、South、East、和West方向上扩展,以占据可能的所有空间。

Grid布局管理器是Tkinter GUI编程的重要组成部分之一,也是
许多图形用户界面程序的首选布局管理器之一。

wxPython电子表格功能wx.grid实例教程

wxPython电子表格功能wx.grid实例教程

wxPython电⼦表格功能wx.grid实例教程本⽂实例为⼤家分享了wxPython电⼦表格功能的具体代码,供⼤家参考,具体内容如下#!/usr/bin/env python#encoding: utf8import wximport wx.grid as gridlib#import wx.lib.mixins.grid as mixins#---------------------------------------------------------------------------class SimpleGrid(gridlib.Grid): ##, mixins.GridAutoEditMixin):def __init__(self, parent, log):gridlib.Grid.__init__(self, parent, -1)##mixins.GridAutoEditMixin.__init__(self)#打印log信息self.log = logself.moveTo = Noneself.Bind(wx.EVT_IDLE, self.OnIdle)#创建⼀个25X25的电⼦表格self.CreateGrid(25, 25)#, gridlib.Grid.SelectRows)##self.EnableEditing(False)#simple cell formatting#设置第index=3列的宽度⼤⼩,像素=200self.SetColSize(col=3,width=200)#设置第index=4⾏的⾼度⼤⼩,像素=45self.SetRowSize(4, 45)#设置 row=0,col=0,value="First cell"self.SetCellValue(0, 0, "First cell")#设置 row=1,col=1,value="Another cell"self.SetCellValue(1, 1, "Another cell")#设置 row=2,col=2,value="Yet another cell"self.SetCellValue(2, 2, "Yet another cell")#设置 row=3,col=3,value="This cell is read-only"self.SetCellValue(3, 3, "This cell is read-only")#设置字体格式self.SetCellFont(0, 0, wx.Font(12, wx.FONTFAMILY_ROMAN, wx.FONTSTYLE_ITALIC, wx.FONTWEIGHT_NORMAL))#设置字体颜⾊self.SetCellTextColour(1, 1, wx.RED)#设置cell背景颜⾊self.SetCellBackgroundColour(2, 2, wx.CYAN)#设置只读属性self.SetReadOnly(3, 3, True)#设置 row=5,col=0,数字编辑器self.SetCellEditor(5, 0, gridlib.GridCellNumberEditor(1,1000))#设置 row=5,col=0,value="123"self.SetCellValue(5, 0, "123")#设置 row=6,col=0,浮点数self.SetCellEditor(6, 0, gridlib.GridCellFloatEditor())#设置 row=6,col=0,value="123.34"self.SetCellValue(6, 0, "123.34")#设置self.SetCellEditor(7, 0, gridlib.GridCellNumberEditor())#设置 row=6,col=3,value="You can veto editing this cell"self.SetCellValue(6, 3, "You can veto editing this cell")#self.SetRowLabelSize(0)#self.SetColLabelSize(0)# attribute objects let you keep a set of formatting values# in one spot, and reuse them if needed#wx.grid.GridCellAttr#这个类可以⽤来通过改变它们的默认属性来改变⽹格在⽹格中的外观。

python grid 参数

python grid 参数

python grid 参数(原创实用版)目录1.Python grid 参数概述2.grid 参数的常用属性3.grid 参数在实际编程中的应用4.grid 参数的优缺点5.总结正文【1.Python grid 参数概述】在 Python 编程中,grid 参数是一个非常实用的参数,主要用于实现网格布局。

通过 grid 参数,我们可以方便地对齐和布局页面元素,从而提高代码的可读性和易用性。

【2.grid 参数的常用属性】grid 参数包含多个常用的属性,以下是其中几个重要的属性:- grid-template-columns:定义网格的列布局,可以是一个数字(表示列数)或者一个含有多个数字的列表(表示每列的宽度)。

- grid-template-rows:定义网格的行布局,可以是一个数字(表示行数)或者一个含有多个数字的列表(表示每行的高度)。

- grid-gap:定义网格项之间的间距。

- grid-template-areas:定义网格区域的布局,可以用来实现复杂的布局需求。

【3.grid 参数在实际编程中的应用】grid 参数在实际编程中有广泛的应用,例如:- 实现响应式布局:通过 grid 参数,我们可以轻松地创建响应式布局,使得页面在不同设备上能够自适应调整。

- 创建复杂的布局:grid 参数允许我们创建复杂的布局,如多列布局、错位布局等,大大提高了编程的灵活性和效率。

【4.grid 参数的优缺点】grid 参数的优点包括:- 易用性高:grid 参数的使用非常简单,只需设置相应的属性即可实现复杂的布局。

- 灵活性强:grid 参数允许我们创建各种复杂的布局,适应不同的需求。

grid 参数的缺点包括:- 学习成本较高:对于初学者来说,grid 参数可能需要一定的时间来学习和掌握。

- 兼容性问题:在不同浏览器上,grid 参数的兼容性可能存在差异,需要进行额外的调试。

【5.总结】总的来说,Python grid 参数是一个非常实用的参数,可以帮助我们轻松地实现复杂的网格布局。

wxPython中如何让继承使用了PyGridTableBase的grid切换数据

wxPython中如何让继承使用了PyGridTableBase的grid切换数据

wxPython中如何让继承使⽤了PyGridTableBase的grid切换数据⼩记以前⼀个QQ农场偷菜软件我的展⽰农作物的表格有点复杂,数据类继承Grid.PyGridTableBase,显⽰类继承Grid.PyGridCellRenderer问题是当我在运⾏时要切换表格中的数据时,表格并不随之动态更新。

这个问题困扰了我很久,曾经逼得我建了3个表格,切换数据时隐藏另外两个。

可这个解决⽅案实在不漂亮。

⼀次次Google加⼀次偶然的灵机⼀动,I hack it此过程需要以下三步的配合,我写成⼀个⽅法:1. def SwitchData(self, rows)2. #1.删除原来所有的数据3. self.DeleteRows(0, self.GetNumberRows())4. _msg = Grid.GridTableMessage(self.GetTable(),5. Grid.GRIDTABLE_NOTIFY_ROWS_DELETED,6. 0, #index of the first row7. self.GetNumberRows() #the number of rows to be removed8. )9. self.ProcessTableMessage(_msg)10. #2.添加新的数据11. self.GetTable().AppendRows(rows) #数据类中的⼀个增加⾏的函数,⾃定义12. _msg = Grid.GridTableMessage(self.GetTable(),13. Grid.GRIDTABLE_NOTIFY_ROWS_APPENDED, # what we did to it14. self.GetTable().GetNumberRows() # how many15. )16. self.ProcessTableMessage(_msg)17. #3.强制更新表格视图18. self.AutoSizeColumns()19. self.AutoSizeRows()。

PythonGrid使用和布局详解

PythonGrid使用和布局详解

PythonGrid使⽤和布局详解本⽂实例为⼤家分享了Python Grid使⽤和布局的具体代码,供⼤家参考,具体内容如下#!/usr/bin/env pythonimport vtk# 这个⽰例主要⽤于将不同的图像对象显⽰到指定的Grid中def main():colors = vtk.vtkNamedColors()# Set the background color.colors.SetColor("BkgColor", [51, 77, 102, 255])titles = list()textMappers = list()textActors = list()uGrids = list()mappers = list()actors = list()renderers = list()uGrids.append(MakeHexagonalPrism())titles.append('Hexagonal Prism')uGrids.append(MakeHexahedron())titles.append('Hexahedron')uGrids.append(MakePentagonalPrism())titles.append('Pentagonal Prism')uGrids.append(MakePolyhedron())titles.append('Polyhedron')uGrids.append(MakePyramid())titles.append('Pyramid')uGrids.append(MakeTetrahedron())titles.append('Tetrahedron')uGrids.append(MakeVoxel())titles.append('Voxel')uGrids.append(MakeWedge())titles.append('Wedge')renWin = vtk.vtkRenderWindow()renWin.SetWindowName('Cell3D Demonstration')iRen = vtk.vtkRenderWindowInteractor()iRen.SetRenderWindow(renWin)# Create one text property for alltextProperty = vtk.vtkTextProperty()textProperty.SetFontSize(16)textProperty.SetJustificationToCentered()# Create and link the mappers actors and renderers together.# 为每个独⽴的⽂本图形对象创建独⽴的Mapper和Actors,并绑定⾄每个grid中for i in range(0, len(uGrids)):textMappers.append(vtk.vtkTextMapper())textActors.append(vtk.vtkActor2D())#mappers.append(vtk.vtkDataSetMapper())actors.append(vtk.vtkActor())renderers.append(vtk.vtkRenderer())mappers[i].SetInputData(uGrids[i])actors[i].SetMapper(mappers[i])actors[i].GetProperty().SetColor(colors.GetColor3d("Seashell"))renderers[i].AddViewProp(actors[i])textMappers[i].SetInput(titles[i])textMappers[i].SetTextProperty(textProperty)textActors[i].SetMapper(textMappers[i])textActors[i].SetPosition(120, 16)renderers[i].AddViewProp(textActors[i])renWin.AddRenderer(renderers[i])gridDimensions = 3rendererSize = 300renWin.SetSize(rendererSize * gridDimensions,rendererSize * gridDimensions)# 渲染图形对象⾄不同的显⽰区域for row in range(0, gridDimensions):for col in range(0, gridDimensions):index = row * gridDimensions + col# (xmin, ymin, xmax, ymax)viewport = [float(col) * rendererSize /(gridDimensions * rendererSize),float(gridDimensions - (row + 1)) * rendererSize /(gridDimensions * rendererSize),float(col + 1) * rendererSize /(gridDimensions * rendererSize),float(gridDimensions - row) * rendererSize /(gridDimensions * rendererSize)]if index > len(actors) - 1:# Add a renderer even if there is no actor.# This makes the render window background all the same color. ren = vtk.vtkRenderer()ren.SetBackground(colors.GetColor3d("BkgColor"))ren.SetViewport(viewport)renWin.AddRenderer(ren)continuerenderers[index].SetViewport(viewport)renderers[index].SetBackground(colors.GetColor3d("BkgColor")) renderers[index].ResetCamera()renderers[index].GetActiveCamera().Azimuth(30)renderers[index].GetActiveCamera().Elevation(-30)renderers[index].GetActiveCamera().Zoom(0.85)renderers[index].ResetCameraClippingRange()iRen.Initialize()renWin.Render()iRen.Start()def MakeHexagonalPrism():"""3D: hexagonal prism: a wedge with an hexagonal base.Be careful, the base face ordering is different from wedge. """numberOfVertices = 12points = vtk.vtkPoints()points.InsertNextPoint(0.0, 0.0, 1.0)points.InsertNextPoint(1.0, 0.0, 1.0)points.InsertNextPoint(1.5, 0.5, 1.0)points.InsertNextPoint(1.0, 1.0, 1.0)points.InsertNextPoint(0.0, 1.0, 1.0)points.InsertNextPoint(-0.5, 0.5, 1.0)points.InsertNextPoint(0.0, 0.0, 0.0)points.InsertNextPoint(1.0, 0.0, 0.0)points.InsertNextPoint(1.5, 0.5, 0.0)points.InsertNextPoint(1.0, 1.0, 0.0)points.InsertNextPoint(0.0, 1.0, 0.0)points.InsertNextPoint(-0.5, 0.5, 0.0)hexagonalPrism = vtk.vtkHexagonalPrism()for i in range(0, numberOfVertices):hexagonalPrism.GetPointIds().SetId(i, i)ug = vtk.vtkUnstructuredGrid()ug.InsertNextCell(hexagonalPrism.GetCellType(),hexagonalPrism.GetPointIds())ug.SetPoints(points)return ugdef MakeHexahedron():"""A regular hexagon (cube) with all faces square and three squares around each vertex is created below.Setup the coordinates of eight points(the two faces must be in counter clockwiseorder as viewed from the outside).As an exercise you can modify the coordinates of the points to create seven topologically distinct convex hexahedras."""numberOfVertices = 8# Create the pointspoints = vtk.vtkPoints()points.InsertNextPoint(0.0, 0.0, 0.0)points.InsertNextPoint(1.0, 0.0, 0.0)points.InsertNextPoint(1.0, 1.0, 0.0)points.InsertNextPoint(0.0, 1.0, 0.0)points.InsertNextPoint(0.0, 0.0, 1.0)points.InsertNextPoint(1.0, 0.0, 1.0)points.InsertNextPoint(1.0, 1.0, 1.0)points.InsertNextPoint(0.0, 1.0, 1.0)# Create a hexahedron from the pointshex_ = vtk.vtkHexahedron()for i in range(0, numberOfVertices):hex_.GetPointIds().SetId(i, i)# Add the points and hexahedron to an unstructured griduGrid = vtk.vtkUnstructuredGrid()uGrid.SetPoints(points)uGrid.InsertNextCell(hex_.GetCellType(), hex_.GetPointIds())return uGriddef MakePentagonalPrism():numberOfVertices = 10# Create the pointspoints = vtk.vtkPoints()points.InsertNextPoint(11, 10, 10)points.InsertNextPoint(13, 10, 10)points.InsertNextPoint(14, 12, 10)points.InsertNextPoint(12, 14, 10)points.InsertNextPoint(10, 12, 10)points.InsertNextPoint(11, 10, 14)points.InsertNextPoint(13, 10, 14)points.InsertNextPoint(14, 12, 14)points.InsertNextPoint(12, 14, 14)points.InsertNextPoint(10, 12, 14)# Pentagonal PrismpentagonalPrism = vtk.vtkPentagonalPrism()for i in range(0, numberOfVertices):pentagonalPrism.GetPointIds().SetId(i, i)# Add the points and hexahedron to an unstructured griduGrid = vtk.vtkUnstructuredGrid()uGrid.SetPoints(points)uGrid.InsertNextCell(pentagonalPrism.GetCellType(),pentagonalPrism.GetPointIds())return uGriddef MakePolyhedron():Make a regular dodecahedron. It consists of twelve regular pentagonal faces with three faces meeting at each vertex."""# numberOfVertices = 20numberOfFaces = 12# numberOfFaceVertices = 5points = vtk.vtkPoints()points.InsertNextPoint(1.21412, 0, 1.58931)points.InsertNextPoint(0.375185, 1.1547, 1.58931)points.InsertNextPoint(-0.982247, 0.713644, 1.58931)points.InsertNextPoint(-0.982247, -0.713644, 1.58931)points.InsertNextPoint(0.375185, -1.1547, 1.58931)points.InsertNextPoint(1.96449, 0, 0.375185)points.InsertNextPoint(0.607062, 1.86835, 0.375185)points.InsertNextPoint(-1.58931, 1.1547, 0.375185)points.InsertNextPoint(-1.58931, -1.1547, 0.375185)points.InsertNextPoint(0.607062, -1.86835, 0.375185)points.InsertNextPoint(1.58931, 1.1547, -0.375185)points.InsertNextPoint(-0.607062, 1.86835, -0.375185)points.InsertNextPoint(-1.96449, 0, -0.375185)points.InsertNextPoint(-0.607062, -1.86835, -0.375185)points.InsertNextPoint(1.58931, -1.1547, -0.375185)points.InsertNextPoint(0.982247, 0.713644, -1.58931)points.InsertNextPoint(-0.375185, 1.1547, -1.58931)points.InsertNextPoint(-1.21412, 0, -1.58931)points.InsertNextPoint(-0.375185, -1.1547, -1.58931)points.InsertNextPoint(0.982247, -0.713644, -1.58931)# Dimensions are [numberOfFaces][numberOfFaceVertices]dodechedronFace = [[0, 1, 2, 3, 4],[0, 5, 10, 6, 1],[1, 6, 11, 7, 2],[2, 7, 12, 8, 3],[3, 8, 13, 9, 4],[4, 9, 14, 5, 0],[15, 10, 5, 14, 19],[16, 11, 6, 10, 15],[17, 12, 7, 11, 16],[18, 13, 8, 12, 17],[19, 14, 9, 13, 18],[19, 18, 17, 16, 15]]dodechedronFacesIdList = vtk.vtkIdList()# Number faces that make up the cell.dodechedronFacesIdList.InsertNextId(numberOfFaces)for face in dodechedronFace:# Number of points in the face == numberOfFaceVerticesdodechedronFacesIdList.InsertNextId(len(face))# Insert the pointIds for that face.[dodechedronFacesIdList.InsertNextId(i) for i in face]uGrid = vtk.vtkUnstructuredGrid()uGrid.InsertNextCell(vtk.VTK_POLYHEDRON, dodechedronFacesIdList) uGrid.SetPoints(points)return uGriddef MakePyramid():"""Make a regular square pyramid."""numberOfVertices = 5points = vtk.vtkPoints()p = [[1.0, 1.0, 0.0],[-1.0, 1.0, 0.0],[-1.0, -1.0, 0.0],[1.0, -1.0, 0.0],[0.0, 0.0, 1.0]for pt in p:points.InsertNextPoint(pt)pyramid = vtk.vtkPyramid()for i in range(0, numberOfVertices):pyramid.GetPointIds().SetId(i, i)ug = vtk.vtkUnstructuredGrid()ug.SetPoints(points)ug.InsertNextCell(pyramid.GetCellType(), pyramid.GetPointIds())return ugdef MakeTetrahedron():"""Make a tetrahedron."""numberOfVertices = 4points = vtk.vtkPoints()points.InsertNextPoint(0, 0, 0)points.InsertNextPoint(1, 0, 0)points.InsertNextPoint(1, 1, 0)points.InsertNextPoint(0, 1, 1)tetra = vtk.vtkTetra()for i in range(0, numberOfVertices):tetra.GetPointIds().SetId(i, i)cellArray = vtk.vtkCellArray()cellArray.InsertNextCell(tetra)unstructuredGrid = vtk.vtkUnstructuredGrid()unstructuredGrid.SetPoints(points)unstructuredGrid.SetCells(vtk.VTK_TETRA, cellArray)return unstructuredGriddef MakeVoxel():"""A voxel is a representation of a regular grid in 3-D space."""numberOfVertices = 8points = vtk.vtkPoints()points.InsertNextPoint(0, 0, 0)points.InsertNextPoint(1, 0, 0)points.InsertNextPoint(0, 1, 0)points.InsertNextPoint(1, 1, 0)points.InsertNextPoint(0, 0, 1)points.InsertNextPoint(1, 0, 1)points.InsertNextPoint(0, 1, 1)points.InsertNextPoint(1, 1, 1)voxel = vtk.vtkVoxel()for i in range(0, numberOfVertices):voxel.GetPointIds().SetId(i, i)ug = vtk.vtkUnstructuredGrid()ug.SetPoints(points)ug.InsertNextCell(voxel.GetCellType(), voxel.GetPointIds())return ugdef MakeWedge():"""A wedge consists of two triangular ends and three rectangular faces. """numberOfVertices = 6points = vtk.vtkPoints()points.InsertNextPoint(0, 1, 0)points.InsertNextPoint(0, 0, 0)points.InsertNextPoint(0, .5, .5)points.InsertNextPoint(1, 1, 0)points.InsertNextPoint(1, 0.0, 0.0)points.InsertNextPoint(1, .5, .5)wedge = vtk.vtkWedge()for i in range(0, numberOfVertices):wedge.GetPointIds().SetId(i, i)ug = vtk.vtkUnstructuredGrid()ug.SetPoints(points)ug.InsertNextCell(wedge.GetCellType(), wedge.GetPointIds())return ugdef WritePNG(renWin, fn, magnification=1):"""ScreenshotWrite out a png corresponding to the render window.:param: renWin - the render window.:param: fn - the file name.:param: magnification - the magnification."""windowToImageFilter = vtk.vtkWindowToImageFilter()windowToImageFilter.SetInput(renWin)windowToImageFilter.SetMagnification(magnification)# Record the alpha (transparency) channel# windowToImageFilter.SetInputBufferTypeToRGBA()windowToImageFilter.SetInputBufferTypeToRGB()# Read from the back bufferwindowToImageFilter.ReadFrontBufferOff()windowToImageFilter.Update()writer = vtk.vtkPNGWriter()writer.SetFileName(fn)writer.SetInputConnection(windowToImageFilter.GetOutputPort())writer.Write()if __name__ == '__main__':main()以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

wxpython基本控件

wxpython基本控件

wxpython基本控件一、静态文本控件wx.StaticText(parent, id, label, pos=wx.DefaultPosition,size=wx.DefaultSize, style=0, name="staticText")wx.StaticText构造函数的参数parent:父窗口部件。

id:标识符。

使用-1可以自动创建一个唯一的标识。

label:你想显示在静态控件中的文本。

pos:一个wx.Point或一个Python元组,它是窗口部件的位置。

size:一个wx.Size或一个Python元组,它是窗口部件的尺寸。

style:样式标记。

name:对象的名字,用于查找的需要。

其中样式wx.ALIGN_CENTER:静态文本位于静态文本控件的中心。

wx.ALIGN_LEFT:文本在窗口部件中左对齐。

这是默认的样式。

wx.ALIGN_RIGHT:文本在窗口部件中右对齐。

wx.ST_NO_AUTORESIZE:如果使用了这个样式,那么在使用了SetLabel()改变文本之后,静态文本控件不将自我调整尺寸。

你应结合使用一个居中或右对齐的控件来保持对齐。

二、文本输入控件wx.TextCtrl的样式wx.TE_CENTER:控件中的文本居中。

wx.TE_LEFT:控件中的文本左对齐。

默认行为。

wx.TE_NOHIDESEL:文本始终高亮显示,只适用于Windows。

wx.TE_PASSWORD:不显示所键入的文本,代替以星号显示。

wx.TE_PROCESS_ENTER:如果使用了这个样式,那么当用户在控件内按下回车键时,一个文本输入事件被触发。

否则,按键事件内在的由该文本控件或该对话框管理。

wx.TE_PROCESS_TAB:如果指定了这个样式,那么通常的字符事件在Tab键按下时创建(一般意味一个制表符将被插入文本)。

否则,tab由对话框来管理,通常是控件间的切换。

python grid 参数

python grid 参数

python grid 参数在Python 中,"grid" 参数通常与图形库中的布局管理器有关。

两个主要的图形库是Tkinter 和PyQt,它们都使用grid 参数来指定组件的行和列位置。

Tkinter 的grid 参数:在Tkinter 中,`grid` 方法用于将组件添加到网格布局中。

它接受多个参数,其中包括`row` 和`column`,用于指定组件的行和列位置。

以下是`grid` 方法的一些参数:- row: 表示组件所在的行。

- column: 表示组件所在的列。

- rowspan: 表示组件跨越的行数。

- columnspan: 表示组件跨越的列数。

- sticky: 控制组件在单元格中的对齐方式,可以使用N, E, S, W 或它们的组合(例如,"NE" 表示右上角对齐)。

```pythonimport tkinter as tkroot = ()label1 = bel(root, text="Label 1")label1.grid(row=0, column=0)label2 = bel(root, text="Label 2")label2.grid(row=0, column=1)button = tk.Button(root, text="Button")button.grid(row=1, column=0, columnspan=2, sticky="we")root.mainloop()```PyQt 的grid 参数:在PyQt 中,QWidget 类的`setGeometry` 方法使用`grid` 参数来设置组件的位置和大小。

以下是一些常用的参数:- x: 表示组件的x 坐标。

- y: 表示组件的y 坐标。

- width: 表示组件的宽度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

wxpython grid用法
wxPython中的Grid用法
wxPython是一个基于Python的GUI框架,它提供了丰富的用户界面控件,其
中包括了Grid控件。

Grid控件是一种表格布局的控件,用于显示和编辑二维数据。

使用Grid控件可以方便地创建和管理多行多列的数据表格。

下面是一些wxPython中Grid控件的常见用法:
1. 创建Grid控件:使用wx.grid.Grid类创建一个Grid控件的实例,并将其添加到父窗口中。

2. 设置Grid的列数和行数:使用Grid控件的SetColSize和SetRowSize方法来
设置Grid的列数和行数。

3. 添加数据到Grid中:使用Grid控件的SetCellValue方法或SetTable方法来
设置每个单元格的值。

可以通过指定行和列的索引来访问特定的单元格。

4. 设置Grid的样式和外观:可以使用Grid控件的SetColLabelValue和SetRowLabelValue方法来设置列标签和行标签。

此外,还可以使用Grid控件的SetCellTextColour和SetCellBackgroundColour方法来设置单元格的文本颜色和背景
颜色。

5. 设置Grid控件的编辑功能:可以使用Grid的EnableEditing方法来启用或禁
用Grid的编辑功能。

还可以设置Grid的合并和拆分功能,使得单元格可以合并或
拆分。

6. 添加事件处理:可以为Grid控件添加事件处理函数,以便在用户修改Grid
中的数据时触发相应的事件。

总结起来,wxPython中的Grid控件提供了丰富的功能,可以方便地创建和管理数据表格。

开发人员可以根据自己的需求,灵活地使用Grid控件来展示和编辑数据。

通过设置Grid的样式和外观,还可以使得数据表格更加美观和易于阅读。

相关文档
最新文档