python中的窗口创建类

在前面已经学习怎么样把注册窗口的功能封装成类的形式,接着下来就是创建窗口的功能,而这部分功能又是怎么样编写才是最合适的呢,以便后面所有开发工作都可以复用这些代码。我们来仔细地分析一下窗口上主要有什么东西是可变的,什么东西不变的,原则上就是把可变的东西变成通过函数方式来改变,不变的东西放在类内部,这样减少类的使用者在细节上考虑的问题。目前来看,一个窗口最容易变化的就两样东西:窗口类型,指明这个窗口是属于那一个种类的,比如Edit、List等;另外一个就是窗口的标题,因为软件的使用者只能从窗口的标题去区分相同类型的窗口。其实这两点就是从不同的角度去区分窗口的需求,窗口类型是从开发者角度去看不同窗口的类型;窗口的标题是从使用者角度去看不同窗口的功能区分。有这两点思路之后,就可以来编写这个类的代码了,完整的代码如下:

#开发人员:蔡军生(QQ:9073204) 深圳  2014-8-20
#创建窗口
class WinMaker:
    def __init__(self, className, hInst):
        self.className = className
        self.hInst = hInst
        self.style = WS_OVERLAPPEDWINDOW | WS_CAPTION
        self.exStyle = 0
        self.x = CW_USEDEFAULT
        self.y = 0
        self.width = CW_USEDEFAULT
        self.height = 0
        self.hWndParent = HWND(0)
        self.hMenu = HWND(0)
        self.wndCreatData = c_void_p(0)
    def Create(self, title):
        self.hWnd = windll.user32.CreateWindowExW(
            self.exStyle, self.className, title,
            self.style,
            self.x, self.y,
            self.width, self.height,
            self.hWndParent,
            self.hMenu,
            self.hInst,
            self.wndCreatData)  

        if not self.hWnd:
            print('Failed to create window')
            exit(0)
        return self.hWnd

class是Python类的关键字,主要用来定义类名称。WinMaker是我命名的创建窗口的类名称,以后就可以使用这个类来创建很多很多窗口,而不再需要拷贝粘贴N多的代码。接着下来就看到__init__构造函数,在这个构造函数里主要一件事情,就是创建窗口所有需要的参数。在这个构造函数的参数列表里,className是窗口类型的名称;hInst是窗口属于应用实例的句柄。创建时,其它窗口参数都使用默认的参数。当然你如果想控制更多的窗口属性,那可添加到参数列表里。最后定义了Create函数来创建窗口的操作,在这个操作里通过参数传递窗口的标题title进来,从而达到让窗口显示不同的名称。在这段代码里,主要使用到Python的类三个特性,一个是Python类的构造函数__init__;一个是Python类的成员函数Create;一个是Python类的成员变量,如self.className = className。

返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 参数
, 窗口
, classname
, 一个
, Self
python注册功能
python 创建窗口、maya python创建窗口、python 创建类、python 动态创建类、python 创建类实例,以便于您获取更多的相关知识。

时间: 2024-09-18 13:53:34

python中的窗口创建类的相关文章

python中的窗口显示类

窗口在前面已经注册,并且已经创建出来了,但这时这个窗口并不能出现在我们的眼前,又是什么原因呢?哦,还不显示出来,原来是有原因的,就是窗口有多种状态,窗口可以隐藏.普通显示.最大化显示.最小化显示等.并且创建出来时,不立即显示,也是可以方便一性地创建很多很多窗口,最后才一次性地显示出来:另外创建窗口之后在系统看来窗口已经是可用的,这时可以先在窗口上绘图,当完成时再一次性显示出来,也避免窗口不断地刷新时窗口在闪动,看起来让人眼花缭乱.因而在这里就封装一个窗口显示类Window,这个类非常简单,它的代

Python中多线程的创建及基本调用方法_python

1. 多线程的作用简而言之,多线程是并行处理相互独立的子任务,从而大幅度提高整个任务的效率. 2. Python中的多线程相关模块和方法Python中提供几个用于多线程编程的模块,包括thread,threading和Queue等 thread模块提供了基本的线程和锁的支持,除产生线程外,也提供基本的同步数据结构锁对象,其中包括: start_new_thread(function, args kwargs=None)  产生一个新的线程来运行给定函数 allocate_lock()  分配一个

python中每个窗口单独处理消息的例子源码

整个窗口使用消息类重新写的源码如下: #windows应用程序 #使用类来描述 #开发人员:蔡军生(QQ:9073204) 深圳 2014-8-24 from ctypes import * from ctypes.wintypes import * WS_EX_APPWINDOW = 0x40000 WS_OVERLAPPEDWINDOW = 0xcf0000 WS_CAPTION = 0xc00000 SW_SHOWNORMAL = 1 SW_SHOW = 5 CS_HREDRAW = 2

Python中的元类编程入门指引_python

回顾面向对象编程 让我们先用 30 秒钟来回顾一下 OOP 到底是什么.在面向对象编程语言中,可以定义 类,它们的用途是将相关的数据和行为捆绑在一起.这些类可以继承其 父类的部分或全部性质,但也可以定义自己的属性(数据)或方法(行为).在定义类的过程结束时,类通常充当用来创建 实例(有时也简单地称为 对象)的模板.同一个类的不同实例通常有不同的数据,但"外表"都是一样 - 例如, Employee 对象 bob 和 jane 都有 .salary 和 .room_number ,但两者

Python中的Classes和Metaclasses详解

 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个"类对象"并将其赋值给一个同名变量.类是type类型的对象(是不是有点拗口?). 类对象是可调用的(callable,实现了 __call__方法),并且调用它能够创建类的对象.你可以将类当做其他对象那么处理.例如,你能够给它们的属性赋值,你能够将它们赋值给一个变量,你可以在任何可调用对象能够用的地方使用它们,比如在一个map中.事实上当你在使用map(str, [1,2,3])的时候,是将一

解读Python中的

  这篇文章主要介绍了Python中的__init__()方法,__init__()方法是Python学习当中重要的基础知识,需要的朋友可以参考下 __init__()方法意义重大的原因有两个.第一个原因是在对象生命周期中初始化是最重要的一步;每个对象必须正确初始化后才能正常工作.第二个原因是__init__()参数值可以有多种形式. 因为有很多种方式为__init__()提供参数值,对于对象创建有大量的用例,我们可以看看其中的几个.我们想尽可能的弄清楚,因此我们需要定义一个初始化来正确的描述问

Python中的Classes和Metaclasses详解_python

类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个"类对象"并将其赋值给一个同名变量.类是type类型的对象(是不是有点拗口?). 类对象是可调用的(callable,实现了 __call__方法),并且调用它能够创建类的对象.你可以将类当做其他对象那么处理.例如,你能够给它们的属性赋值,你能够将它们赋值给一个变量,你可以在任何可调用对象能够用的地方使用它们,比如在一个map中.事实上当你在使用map(str, [1,2,3])的时候,是将一个

动态创建类实例代码_python

例如: import mymodule myobject = mymodule.myclass() 或者 from mymodule import myclass myobject = myclass() 如果要在程序中动态地创建类实例,也一样要分两步走,例如: m = __import__('mymodule') c = getattr(m, 'myclass') myobject = c() 但是要注意:如果myclass并不在mymodule的自动导出列表中(__all__),则必须显式地

Python中的类与对象之描述符详解

 这篇文章主要介绍了Python中的描述符详解,属于Python学习过程中类与对象的基本知识,需要的朋友可以参考下     描述符(Descriptors)是Python语言中一个深奥但却重要的一部分.它们广泛应用于Python语言的内核,熟练掌握描述符将会为Python程序员的工具箱添加一个额外的技巧.为了给接下来对描述符的讨论做一些铺垫,我将描述一些程序员可能会在日常编程活动中遇到的场景,然后我将解释描述符是什么,以及它们如何为这些场景提供优雅的解决方案.在这篇总结中,我会使用新样式类来指代