wxFormbuilder

      在〈wxFormbuilder〉中尚無留言

用途

wxFormbuilder是一套視覺化設計wxWidget UI的好工具. 可以直接用拖曳的方式將元件放置在frame裏.

為什麼現在才講這個好用的東西呢! 因為了解了基本的概念及事件後, 再來使用這個工具, 才會比較順手.

使用拖曳的方式當然有其限制. 但煩雜的元件擺設, menuBar的安排, 實在是會讓人抓狂. 所以適時使用視覺化工具, 可以提升程式撰寫的效率.

下載

請由如下網址下載, 並直接安裝即可
https://sourceforge.net/projects/wxformbuilder/

wxbuilder

產生Python代碼

視覺化設定完成後, 直接切換到Python標籤, 即可看到完整的Python代碼

wxbuilder2

套用

經由wxFormBuilder產生的代碼, 只需回到pyCharm 新增 mainframe.py 並copy進去即可.
但wxFormBuilder所產生的Python代碼, 是針對較舊的版本撰寫, 跟不上最新的Python解譯器. 所以套用時, 需針對Python3.7版作作細部修改

需修改及新增修的部份, 如下藍色所標示的部份

# -*- coding: utf-8 -*-
import wx
import wx.xrc
class MainFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
                          size=wx.Size(1106, 614), style=wx.DEFAULT_FRAME_STYLE | wx.MAXIMIZE | wx.TAB_TRAVERSAL)

        self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)

        self.statusBar = self.CreateStatusBar(1, wx.STB_SIZEGRIP, wx.ID_ANY)
        self.menubar = wx.MenuBar(0)
        self.menu_file = wx.Menu()
        self.it_open_video = wx.MenuItem(self.menu_file, wx.ID_ANY, u"開啟影像(&V)", wx.EmptyString, wx.ITEM_NORMAL)
        self.menu_file.Append(self.it_open_video)

        self.menu_file.AppendSeparator()

        self.it_close = wx.MenuItem(self.menu_file, wx.ID_ANY, u"結束(&C)", wx.EmptyString, wx.ITEM_NORMAL)
        self.menu_file.Append(self.it_close)

        self.menubar.Append(self.menu_file, u"檔案(&F)")

        self.menu_view = wx.Menu()
        self.menubar.Append(self.menu_view, u"檢視(&V)")

        self.menu_game = wx.Menu()
        self.it_rock = wx.MenuItem(self.menu_game, wx.ID_ANY, u"猜拳遊戲", wx.EmptyString, wx.ITEM_NORMAL)
        self.menu_game.Append(self.it_rock)

        self.menubar.Append(self.menu_game, u"遊戲(&G)")

        self.menu_help = wx.Menu()
        self.it_version = wx.MenuItem(self.menu_help, wx.ID_ANY, u"版本", wx.EmptyString, wx.ITEM_NORMAL)
        self.menu_help.Append(self.it_version)

        self.it_license = wx.MenuItem(self.menu_help, wx.ID_ANY, u"版權", wx.EmptyString, wx.ITEM_NORMAL)
        self.menu_help.Append(self.it_license)

        self.menubar.Append(self.menu_help, u"說明(&H)")

        self.SetMenuBar(self.menubar)

        self.Centre(wx.BOTH)

        # Connect Events
        self.Bind(wx.EVT_MENU, self.it_rock_Click, id=self.it_rock.GetId())
        self.Bind(wx.EVT_MENU, self.it_version_Click, id=self.it_version.GetId())
        self.Bind(wx.EVT_MENU, self.it_license_Click, id=self.it_license.GetId())
    def __del__(self):
        pass
    # Virtual event handlers, overide them in your derived class
    def it_rock_Click(self, event):
        panel=wx.Panel(self, -1)
    def it_version_Click(self, event):
        wx.MessageBox("Version\n\n1.0.0","版本說明")
    def it_license_Click(self, event):
        wx.MessageBox("PowerBy\n\nThomas Wu(mahaljsp@gmail.com)","版權說明")
app=wx.App()
MainFrame(None).Show()
app.MainLoop()

wx1

wxStaticText置中

要將wxStticText的文字置中, 可以先把flag裏的wx.EXPAND打勾, 此時整個Label就會擴展到畫面的寬度, 而文字預設靠左. 然後再勾選style裏的wxALIGN_CENTER, 文字就會置中了

wxformbuilder_1

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *