wxPython应用之按钮wx.Button以及可编辑文本wx.TextCtrl

1,wx.Button 的构造函数,如下所示:

wx.Button(parent , id , label , pos , size =wx.DefaultSize , style =0, validator , name ="button ")

参数label 是显示在按钮上的文本。它可以在程序运行期间使用SetLabel() 来改变,并且使用GetLabel() 来获取。

2,wx.TextCtrl 类的构造函数较小且比其父类wx.Window 更精细,它增加了两个参数:

wx.TextCtrl(parent , id , value ="", pos =wx.DefaultPosition , size =wx.DefaultSize , style =0, validator =wx.DefaultValidator,name =wx.TextCtrlNameStr)
单行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 由对话框来管理,通常是控件间的切换。

wx.TE_READONLY :文本控件为只读,用户不能修改其中的文本。

wx.TE_RIGHT :控件中的文本右对齐。

3,先上实例的GUI先睹为快,如下图所示:

wxPython应用之按钮wx.Button以及可编辑文本wx.TextCtrl_第1张图片

4, 程序源代码如下:

# -*- coding: utf-8 -*-

import wx


class myFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, id=-1, title="GUI toolkit")
        #################################################################################################
        # 登录名
        self.st_user = wx.StaticText(self, -1, "登录名 : ", (100, 40))
        self.tc_user = wx.TextCtrl(self, -1, "", (160, 40))
        #################################################################################################
        # 密码控制
        self.st_pwd = wx.StaticText(self, -1, "密    码 : ", (100, 70))
        self.tc_password = wx.TextCtrl(self, -1, "", (160, 70), style=wx.TE_PASSWORD)
        #################################################################################################
        # 确定按钮
        self.ok_btn = wx.Button(self, -1, "确定", (100, 100), (70, 20))
        #################################################################################################
        # 取消按钮
        self.cancel_btn = wx.Button(self, -1, "清空", (180, 100), (70, 20))
        #################################################################################################
        # 用户名与密码显示区
        self.up_monitor = wx.StaticText(self, -1, "", (100, 130))
        #################################################################################################

        # 控件与事件绑定在一起
        self.Bind(wx.EVT_BUTTON, self.OnButtonClick, self.ok_btn)
        self.Bind(wx.EVT_BUTTON, self.OnButtonClick, self.cancel_btn)

    def OnButtonClick(self, event):
        if event.GetEventObject() == self.ok_btn:
            print("确定")
            if self.tc_user.GetValue() == '':
                wx.MessageBox("用户名为空,请输入用户名,再继续......", "提示")
            elif self.tc_password.GetValue() == '':
                wx.MessageBox("密码为空,请输入密码,再继续......", "提示")
            else:
                self.up_monitor.SetLabel(self.st_user.GetLabel() + self.tc_user.GetValue()+'\n'
                                     + self.st_pwd.GetLabel() + self.tc_password.GetValue())

        if event.GetEventObject() == self.cancel_btn:
            print("清空")
            if self.tc_user.GetValue() == '':
                wx.MessageBox("用户名为空,请输入用户名,再继续......", "提示")
            elif self.tc_password.GetValue() == '':
                wx.MessageBox("密码为空,请输入密码,再继续......", "提示")
            else:
                self.tc_user.SetValue("")
                self.tc_password.SetValue("")
                self.up_monitor.SetLabel("")
        

class myApp(wx.App):
    def __init__(self):
        wx.App.__init__(self)

    def OnInit(self):
        frame = myFrame()
        frame.Show(True)

        return True


if __name__ == "__main__":
    app = myApp()
    app.MainLoop()

5,代码运行环境 

Python 3.8.2 (v3.8.2:7b3ab5921f, Feb 24 2020, 17:52:18) 

wxPython   4.0.7.post2 

 

你可能感兴趣的:(wxPython,python)