python打开frame

python打开frame,第1张

例子:

代码如下:

#!/usr/bin/python

# -- coding: GBK --

# simplepy

import wx

app = wxApp()

frame = wxFrame(None)

frameShow()

appMainLoop()

例2,

代码如下:

#!/usr/bin/python

告诉程序 python 解释器的路径,只是在 linux 系统下有用,在 Windows 下写上这行代码不起作用,但是也没问题

# -- coding: GBK --

告诉 python 系统字符编码,这样我们就可以在程序中使用中文汉字了,如果没有这一行就是乱码。Windows 下是 GBK,Linux 下是UTF-8

app = wxApp()

初始化应用程序

frame = wxFrame(None)

frameShow()

创建一个 Frame (就是窗体),并显示出来。

appMainLoop()

应用程序进入消息循环

Frame 其实就是窗体,前面生成窗体时没有给他任何参数,只生成了一个默认的窗体,生成默认窗体的代码:

frame = wxFrame(None)

其实 wxFrame 可以传入很多参数,由此来控制生成窗体的样式和行为,现在来看看 Frame构造函数的原型:

__init__(self, Window parent, int id=-1, String title=EmptyString,

Point pos=DefaultPosition, Size size=DefaultSize,

long style=DEFAULT_FRAME_STYLE, String name=FrameNameStr)

参数1:parent

当前窗口的父窗口,如果当前窗口是top-level window的话,则parent=None,如果不是顶层窗口,则它的值为所属frame的名字

参数2:id

窗体编号。如果设置为-1,则系统自动给他分配一个编号。默认为-1

参数3:title

窗体的标题栏,即Caption。默认为空。

参数4:pos

窗体的位置坐标。默认值为(-1,-1),则窗体的位置由系统决定。

参数5:size

窗体的大小。默认值为(-1,-1),则窗体的大小由系统决定。

参数6:style

窗体样式。默认值为 DEFAULT_FRAME_STYLE

默认样式 DEFAULT_FRAME_STYLE 是下面这些值的复合:

wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxRESIZE_BORDER |

wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN

它包括最小化按钮、最大化按钮、系统菜单、标题栏、关闭按钮、可变大小等等。您也可以根据自己的需求改变样式,具体请参照帮助。

参数7:name

窗体名称。

可以看到,7个参数中6个都有默认值,只有第一个参数 parent 需要设置一下,所以一个最简单的窗体就是:

Python代码 收藏代码

frame = wxFrame(None)

窗体标题:

Python代码 收藏代码

frame = wxFrame(None,title="Hello World")

位置和大小:

Python代码 收藏代码

frame = wxFrame(None,title="世界你好",size=(300,150),pos=(200,200))

样式一:只有一个光秃秃的标题栏

Python代码 收藏代码

frame = wxFrame(None,style=wxCAPTION)

样式二:只有客户区,没有标题栏,也不能改变大小

Python代码 收藏代码

frame = wxFrame(None,style=0)

样式三:只有一个关闭按钮,不能改变大小

代码如下:

frame = wxFrame(None,style= wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX)

wxDEFAULT_FRAME_STYLE :这是每个窗口的缺省风格,包含标题、可调节大小的边框,最大最小化按钮、关闭按钮和系统菜单。

wxCAPTION :在框架上增加一个标题栏,它显示该框架的标题属性。

wxCLOSE_BOX :指示系统在框架的标题栏上显示一个关闭框,使用系统默认的位置和样式。

WxFRAME_ON_TOP : 置顶窗口

w xFRAME_SHAP ED :用这个样式创建的框架可以使用SetShape()方法去创建一个非矩形的窗口。

wxFRAME_TOOL_WINDOW :通过给框架一个比正常更小的标题栏,使框架看起来像一个工具框窗口。在Windows下,使用这个样式创建的框架不会出现在显示所有打开窗口的任务栏上。

wxMAXIMIZE_BOX :指示系统在框架的标题栏上显示一个最大化框,使用系统默认的位置和样式。

wxMINIMIZE_BOX :指示系统在框架的标题栏上显示一个最小化框,使用系统默认的位置和样式。

wxRESIZE_BORDER :给框架增加一个可以改变尺寸的边框。

wxSIMPLE_BORDER :没有装饰的边框。不能工作在所有平台上。

wxSYSTEM_MENU :增加系统菜单(带有关闭、移动、改变尺寸等功能)和关闭框到这个窗口。在系统菜单中的改变尺寸和关闭功能的有效性依赖于wxMAXIMIZE_BOX, wxMINIMIZE_BOX和wxCLOSE_BOX样式是否被应用。

wxFRAME_EX_META :如果时在 MacOS 中,这个属性用于是否显示“金属风格”

wxFRAME_EX_CONTEXTHELP :是否有联机帮助按钮。

wxFRAME_FLOAT_ON_PARENT :窗口是否显示在最上层,与 wxSTAY_ON_TOP 不同,它必须有一个父窗口。

上一节我们介绍了登录窗体的GUI设计与功能实现,用户的账号和密码校验完成后应当跳转到主窗体内容,这一节我们将具体介绍主窗体界面的设计与功能实现!

我们新建一个900x640的窗口,顶部加入,下面主体部分创建两个Panedwindow容器,左边添加按钮,右边作为TreeView显示界面;

显示效果:(注意:tkinter在Mac上Panedwindow不支持修改前景色背景色)

在右边的Pannedwindow容器中,添加一个LabelFrame容器作为查询区域,在LabelFrame容器中添加一系列的Label、Entry、Button控件,可以输入学号、姓名、电话、身份z、查询、和显示全部信息:

显示效果:

创建控件、设置对齐方式和每个列的标题

显示效果:

登录成功后,在顶部显示用户姓名和登录时间,用户姓名是怎么来的?是我们在登录窗口输入的,所以这就涉及到了跨窗体数据的传递。这一点非常重要!

登录窗体(登录信息)==>主窗体

传递的基本方式:构造函数

在主窗体的构造函数中添加一个接收参数 current_user ,在登录窗体加载新窗体时将参数传递进去;

但是我们登录窗体的登录函数 login() 中用户名的变量 user 是局部变量,函数调用完了之后就变量就没有了,那怎么调用呢?

我们需要在登录窗体的构造函数中定义全局变量:

为了获取用户登录的时间,我们定义一个获取当前时间的方法:

然后在加载主窗体时将参数 selfuser 和 selfget_now_time() 作为参数传递进去

另一边,我们在主窗体中,在构造函数中添加全局变量

之后,我们在Top_banner中通过标签将user信息展示出来:

这样主窗口就会显示通过登录窗口登录的用户名(首字母自动转大写)和登录时间:

效果演示:

然后我们在构造方法中把这个函数写入,以实现自动把学生信息写入到all_student_list中

文件中读取到的学生信息存储到all_student_list列表,以此作为参数传入加载TreeView的方法中;

在构造方法中调用该方法,自动把所有学生信息加载到TreeView中

运行效果:

这一节我们实现了主窗体的搭建,从界面的布局到TreeView加载全部学生信息。学生数据如此之多,如果我们想精确查看具体某个学生的信息该怎么做呢?下一讲,我们将实现学生信息的查询功能,敬请期待吧~

[html] view plaincopy

<span style="font-family: Arial, Verdana, sans-serif; white-space: normal; background-color: rgb(255, 255, 255); ">首先,这个东东貌似只有windows上才能实现,所以,需要部署windows下的相关环境</span>

1、需要安装python

2、安装python的win32com的lib,下载地址:

>

3、安装本地的web容器,我用的apache的tomcat

4、编写例子:

[html] view plaincopy

import uuid

import win32comserverregister

class PythonUtilities:

_public_methods_ = ['SplitString']

_reg_progid_ = "PythonUtilities"

#_reg_clsid_ = "{A6688635-62F5-41cb-AF54-CBA84C2F0F86}"

_reg_clsid = "{"+uuiduuid1()+"}"

def SplitString(self, val):

return "Hello world ", val

if __name__ == '__main__':

print "Registering COM server"

win32comserverregisterUseCommandLine(PythonUtilities)

将这个文件保存到tomcat的webapps下的一个目录中

5、编写测试的html页面

[html] view plaincopy

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Strict//EN" ">

<html>

<head>

<meta >

<SCRIPT LANGUAGE="JavaScript">

windowonload = function(){

var obj = new ActiveXObject("PythonUtilities");

alert(objSplitString("Hello world"));

}

</SCRIPT>

</head>

<body>

</body>

</html>

放到python文件的同一个目录

6、到命令行执行该python 代码

7、再请求该网页

print方法并不是用来显示窗体位置的,它是用于在控制台或终端打印输出信息的方法。如果想要显示窗体位置,可以使用窗体对象的属性或方法,如窗体对象的Location属性来获取窗体的位置信息,或者调用窗体对象的ShowDialog()方法来显示窗体。

需要注意的是,窗体的位置是相对于屏幕的,可以通过设置窗体的StartPosition属性来更改窗体的初始位置。此外,还可以通过窗体对象的Size属性来获取或设置窗体的大小。

如果需要在窗体中显示文字或其他控件,可以使用Windows窗体或WPF窗体,它们都提供了丰富的控件和布局管理器,可以方便地创建复杂的用户界面。

以上就是关于python打开frame全部的内容,包括:python打开frame、Python GUI项目实战(二)主窗体的界面设计与实现、如何在python中使用ActiveX控件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10140055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存