首页 > 编程语言 >Python第十二章

Python第十二章

时间:2022-12-29 12:45:37浏览次数:46  
标签:__ Python self StaticText 第十二章 label wx panel

实例1:使用wx.StaticText输出Python之禅

使用StaticText类输出中文版的Python之禅。具体代码如下:

#_*-coding:utf-8 _*_
import wx
class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self, parent, id,title="创建StaticText类",
                         pos=(100,100),size=(600,400))
        # 创建画板
        panel = wx.Panel(self)
        # 创建标题,并设置字体
        title =wx.StaticText(panel,label = "Python之禅-Tim Peters",pos=(100,20))
        font =wx.Font(16,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL)
        title.SetFont(font)
        # 创建文本
        wx.StaticText(panel,label="优美胜于丑陋",pos=(50,50))
        wx.StaticText(panel,label="明了胜于晦涩",pos=(50,70))
        wx.StaticText(panel,label="简洁胜于复杂",pos=(50,90))
        wx.StaticText(panel,label="复杂胜于凌乱",pos=(50,110))
        wx.StaticText(panel,label="扁平胜于嵌套",pos=(50,130))
        wx.StaticText(panel,label="间隔胜于紧凑",pos=(50,150))
        wx.StaticText(panel,label="可读性很重要",pos=(50,170))
        wx.StaticText(panel,label="即便假借特例的实用性之名,也不可违背这些规则",pos=(50,190))
        wx.StaticText(panel,label="不要包容所有错误,除非你确定需要这样做",pos=(50,210))
        wx.StaticText(panel,label="当存在多种可能,不要尝试去猜测",pos=(50,230))
        wx.StaticText(panel,label="而是尽量找一种,最好是唯一一种明显的解决方案",pos=(50,250))
        wx.StaticText(panel,label="虽然这并不容易,因为你不是 Python 之父",pos=(50,270))
        wx.StaticText(panel,label="做也许好过不做,但不假思索就动手还不如不做",pos=(50,290))
        wx.StaticText(panel,label="如果你无法向人描述你的方案,那肯定不是一个好方案: 反之亦然",pos=(50,310))
        wx.StaticText(panel,label="命名空间是一种绝妙的理念,我们应当多加利用",pos=(50,330))

if __name__ == "__main__":
    app = wx.App()                        # 初始化应用
    frame = MyFrame(parent=None,id=-1)    # 实例MyFrame类,并传递参数
    frame.Show()                          # 显示窗口
    app.MainLoop()                        # 调用主循环方法

运行结果:

 

 

 

实例2:使用wx.TextCtrl实现登录界面

使用wx.TextCtrl类和wx.StaticText类实现一个包含用户名和密码的登录界面。具体代码如下:

#_*-coding:utf-8 _*_
import wx
class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,title="创建TextCtrl",size=(400,300))
        # 创建面板
        panel=wx.Panel(self)
        # 创建文本和密码输入框
        self.title = wx.StaticText(panel,label="输入用户名和密码",pos=(140,20))
        self.label_user = wx.StaticText(panel,label="用户名:",pos=(50,50))
        self.text_user = wx.TextCtrl(panel,pos=(100,50),size=(235,25),style=wx.TE_LEFT)
        self.label_user = wx.StaticText(panel,pos=(50, 90),label="密   码:")
        self.text_password = wx.TextCtrl(panel,pos=(100, 90),size=(235, 25),style=wx.TE_PASSWORD)

if __name__ == "__main__":
    app = wx.App()                          # 初始化应用
    frame = MyFrame(parent=None,id=-1)      # 实例MyFrame类,并传递参数
    frame.Show()                            # 显示窗口
    app.MainLoop()                          # 调用主循环方法

运行结果:

 

 

 

实例3:为登录界面添加“确定”和“取消”按钮

使用wx.Button,在实例2的基础上添加“确定”和“取消”按钮具体代码如下:

#_*-coding:utf-8 _*_
import wx
class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,title="创建TextCtrl类",size=(400,300))
        # 创建面板
        panel = wx.Panel(self)
        # 创建文本和密码输入框
        self.title = wx.StaticText(panel,label="输入用户名和密码",pos=(140,20))
        self.label_user = wx.StaticText(panel,label="用户名:",pos=(50,50))
        self.text_user = wx.TextCtrl(panel,pos=(100,50),size=(235,25),style=wx.TE_LEFT)
        self.label_user = wx.StaticText(panel,pos=(50, 90),label="密   码:")
        self.text_password = wx.TextCtrl(panel,pos=(100, 90),size=(235, 25),style=wx.TE_PASSWORD)
        # 创建“确定”和“取消”按钮
        self.bt_confirm = wx.Button(panel,label="确定",pos=(105,130))
        self.bt_cancel  = wx.Button(panel,label="取消",pos=(195,130))

if __name__ == "__main__":
    app = wx.App()                          # 初始化
    frame = MyFrame(parent=None,id=-1)      # 实例MyFrame类,并传递参数
    frame.Show()                            # 显示窗口
    app.MainLoop()                          # 调用主循环方法

运行结果:

 

 

实例4:使用BoxSizer设置登录界面布局

使用BoxSizer布局方式,实现实例3的界面布局效果。具体代码如下:

# _*-coding;utf-8 _*.
import wx
class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,"用户登录",size=(400,300))
        # 创建面板
        panel = wx.Panel(self)
        # 创建“确定”和“取消”按钮,并绑定事件
        self.bt_confirm = wx.Button(panel,label="确定")
        self.bt_cancel = wx.Button(panel,label="取消")
        # 创建文本,左对齐
        self.title = wx.StaticText(panel,label="请输入用户名和密码")
        self.label_user = wx.StaticText(panel,label="用户名:")
        self.text_user = wx.TextCtrl(panel,style=wx.TE_LEFT)
        self.label_pwd = wx.StaticText(panel,label="密   码:")
        self.text_password = wx.TextCtrl(panel,style=wx.TE_PASSWORD)
        # 添加容器,容器中控件横向排列
        hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_user.Add(self.label_user,proportion=0,flag=wx.ALL,border=5)
        hsizer_user.Add(self.text_user,proportion=1,flag=wx.ALL,border=5)
        hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_pwd.Add(self.label_pwd,proportion=0,flag=wx.ALL,border=5)
        hsizer_pwd.Add(self.text_password,proportion=1,flag=wx.ALL,border=5)
        hsizer_button = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_button.Add(self.bt_confirm,proportion=0,flag=wx.ALIGN_CENTER,border=5)
        hsizer_button.Add(self.bt_cancel,proportion=0,flag=wx.ALIGN_CENTER,border=5)
        #添加容器,容器中的控件纵向排列
        vsizer_all = wx.BoxSizer(wx.VERTICAL)
        vsizer_all.Add(self.title,proportion=0,flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER,
                       border=15)
        vsizer_all.Add(hsizer_user,proportion=0,flag=wx.EXPAND | wx.LEFT | wx.RIGHT,border=45)
        vsizer_all.Add(hsizer_pwd,proportion=0,flag=wx.EXPAND| wx.LEFT | wx.RIGHT,border=45)
        vsizer_all.Add(hsizer_button,proportion=0,flag=wx.ALIGN_CENTER | wx.TOP,border=15)
        panel.SetSizer(vsizer_all)

if __name__ == "__main__":
    app = wx.App()                      # 初始化
    frame =MyFrame(parent=None,id=-1)   # 实例化MyFrame类,并传递参数
    frame.Show()                        # 显示窗口
    app.MainLoop()                      # 调用主循环方法

运行结果:

 

 

 

实例5:使用事件判断用户登录

在实例 04 的基础上,分别为“确定”和“取消”按钮添加单击事件。当用户输入用户名和密码后,单击“确定”按钮,如果输入的用户名为“mr”,并且密码为“mrsoft”,则弹出对话框提示“登录成功”否则提示“用户名和密码不匹配”。当用户单击“取消”按钮时,清空用户输入的用户名和密码。具体代码如下:

# _*_coding:utf-8 _*_
import wx
class MyFrame(wx.Frame):
    def __init__ (self,parent,id):
        wx.Frame.__init__(self,parent,id,"用户登录",size=(400,300))
        # 创建面板
        panel = wx.Panel(self)

        # 创建“确定”和“取消”按钮,并绑定事件
        self.bt_confirm = wx.Button(panel,label="确定")
        self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
        self.bt_cancel = wx.Button(panel,label="取消")
        self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnclickCancel)
        # 创建文本,左对齐
        self.title = wx.StaticText(panel,label="请输入用户名和密码")
        self.label_user = wx.StaticText(panel,label="用户名:")
        self.text_user = wx.TextCtrl(panel,style=wx.TE_LEFT)
        self.label_pwd = wx.StaticText(panel,label="密   码:")
        self.text_password = wx.TextCtrl(panel,style=wx.TE_PASSWORD)
        # 添加容器,容器中控件横向排列
        hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_user.Add(self.label_user,proportion=0,flag=wx.ALL,border=5)
        hsizer_user.Add(self.text_user,proportion=1,flag=wx.ALL,border=5)
        hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_pwd.Add(self.label_pwd,proportion=0,flag=wx.ALL,border=5)
        hsizer_pwd.Add(self.text_password,proportion=1,flag=wx.ALL,border=5)
        hsizer_button = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_button.Add(self.bt_confirm,proportion=0,flag=wx.ALIGN_CENTER,border=5)
        hsizer_button.Add(self.bt_cancel,proportion=0,flag=wx.ALIGN_CENTER,border=5)
        #添加容器,容器中的控件纵向排列
        vsizer_all = wx.BoxSizer(wx.VERTICAL)
        vsizer_all.Add(self.title,proportion=0,flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER,
                       border=15)
        vsizer_all.Add(hsizer_user,proportion=0,flag=wx.EXPAND | wx.LEFT | wx.RIGHT,border=45)
        vsizer_all.Add(hsizer_pwd,proportion=0,flag=wx.EXPAND| wx.LEFT | wx.RIGHT,border=45)
        vsizer_all.Add(hsizer_button,proportion=0,flag=wx.ALIGN_CENTER | wx.TOP,border=15)
        panel.SetSizer(vsizer_all)

    def OnclickSubmit(self,event):
        """单击确定按钮,执行方法"""
        message =""
        username = self.text_user.GetValue()            # 获取输入的用户名
        password = self.text_password.GetValue()        # 获取输入的密码
        if username =="" or password =="" :             # 判断用户名或密码是否为空
            message ="用户名或密码不能为空"
        elif username =="mr" and password =="mrsoft":   # 用户名和密码正确
            message ="登录成功"
        else:
            message ="用户名和密码不匹配"               # 用户名或密码错误
        wx.MessageBox(message)                          # 弹出提示框

    def OnclickCancel(self,event):
        """单击取消按钮,执行方法"""
        self.text_user.SetValue("")                     # 清空输入的用户名
        self.text_password.SetValue("")                 # 清空输入的密码

if __name__ == "__main__":
    app = wx.App()                                      # 初始化应用
    frame = MyFrame(parent=None,id=-1)                  # 实例MyFrame类,并传递参数
    frame.Show()                                        # 显示窗口
    app.MainLoop()                                      # 调用主循环方法

运行结果:

 

 

 

 

 

标签:__,Python,self,StaticText,第十二章,label,wx,panel
From: https://www.cnblogs.com/zhuangzhuang123/p/17012223.html

相关文章

  • Python第十一章
    实例1:创建SQLite数据库文件创建一个mrsoft.db的数据库文件,然后执行SQL语句可创建一个user(用户表),user表包含id和name两个字段。具体代码如下:importsqlite3#连接到S......
  • Python 2.7 十六进制字符数组 转 字符串 (字符是Unicode字符)
    有一串十六进制数据,是Uncode字符。importstructstrhex='003100310031'buf=strhex.decode("hex")value=u''slen=len(buf)/2si=0whilesi<slen:tmp=buf[si......
  • Python第八章
    实例01:创建计算BMi指数的模块创建一个用于根据身高、体重计算BMI指数的模块,命名为bmi.py,其中bmi为模块名,.py为扩展名deffun_bmi(person,height,weight):'''......
  • KG4Py:Python代码知识图谱和语义搜索的工具包
    如何构建Python的代码知识图谱,又该如何进行搜索呢?现在的项目程序中存在着大量重复的代码片段,尤其是在软件开发的时候。在本文中,我们提出了一个工具包(KG4Py),用于在GitHub存储......
  • Python 强大的模式匹配工具—Pampy
      https://pypi.org/project/pampy/  santinic/pampy:Pampy:ThePatternMatchingforPythonyoualwaysdreamedof.(github.com) Allthethingsyouca......
  • 【一】python学习——编码及基础
    1、编码#!/usr/bin/python#-*-coding:UTF-8-*-2、文件#打开一个文件fo=open("foo.txt","w")print"文件名:",fo.name#关闭打开的文件fo.close()......
  • Python_用pypinyin将中文名转化为英文名
    1.在处理数据的时候,很多时候采用的都是英文名的方式,避免遇到一些中文转义错误,这里用pypinyin来进行转化。2.总结大佬经验和自己的积累,目前有两种写法。3.方式:(前提,pypinyi......
  • Python图像处理丨详解图像去雾处理方法
    摘要:本文主要讲解ACE去雾算法、暗通道先验去雾算法以及雾化生成算法。本文分享自华为云社区《[Python图像处理]三十.图像预处理之图像去雾详解(ACE算法和暗通道先验去雾算......
  • 【编程实践】利用 Python 调用图灵机器人 API 实现实时语音聊天及自动回复
    前言什么是图灵机器人在人工智能技术飞速发展的今天,很多以前科幻电影里面的高科技都已经变为现实,而且充斥着我们生活的方方面面,比如说机器人,说说话就能把很多时办了。生......
  • Python进阶—Pandas
    Pandas再来一次文章目录​​一、Series和DataFrame​​​​二、选择数据​​​​三、赋值及操作(增、删、改)​​​​四、处理丢失数据​​​​五、读取并写入文件​​​​......