例子:
代码如下:
#!/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控件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)