天天看點

wxPython應用之按鈕wx.Button以及可編輯文本wx.TextCtrl1,wx.Button 的構造函數,如下所示:2,wx.TextCtrl 類的構造函數較小且比其父類wx.Window 更精細,它增加了兩個參數:3,先上執行個體的GUI先睹為快,如下圖所示:4, 程式源代碼如下:5,代碼運作環境 

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 :如果使用了這個樣式,那麼當使用者在控件内按下Enter鍵時,一個文本輸入事件被觸發。否則,按鍵事件内在的由該文本控件或該對話框管理。

wx.TE_PROCESS_TAB :如果指定了這個樣式,那麼通常的字元事件在Tab 鍵按下時建立(一般意味一個制表符将被插入文本)。否則,tab 由對話框來管理,通常是控件間的切換。

wx.TE_READONLY :文本控件為隻讀,使用者不能修改其中的文本。

wx.TE_RIGHT :控件中的文本右對齊。
           

3,先上執行個體的GUI先睹為快,如下圖所示:

wxPython應用之按鈕wx.Button以及可編輯文本wx.TextCtrl1,wx.Button 的構造函數,如下所示:2,wx.TextCtrl 類的構造函數較小且比其父類wx.Window 更精細,它增加了兩個參數:3,先上執行個體的GUI先睹為快,如下圖所示:4, 程式源代碼如下:5,代碼運作環境 

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