wxpython制作表格界面_[Python] wxPython 菜單欄控件學習總結(原創)

1、總結

1、大體創建過程

1、創建一個 菜單欄 : menuBar = wx.MenuBar()

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTMxNDMwODAzLTEwNDk2NjA2NjQucG5n.jpg

相當于這個白色地方,沒有File這個菜單

2、創建 菜單 : fileMenu = wx.Menu()

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTMxNTUxODM0LTQwMTI1MDU0Ni5wbmc=.jpg

這兩個不是直接“用的”,叫菜單。既用來分類其他 菜單項 的文件夾樣

3、創建 菜單項 : newItem = wx.MenuItem()

例如上圖的 New Copy Cut Paste Radio_One 等等等等。

這些可以直接“點”的(看作按鈕)的叫做 菜單項。

創建的時候需要分配 id (int 整數),到時候菜單事件處理的時候需要通過傳遞的 id (event.GetId())來判斷單擊的按鈕。

4、將 菜單項 添加到 菜單中 : fileMenu.AppendItem(newItem)

這樣當我們單機 File 的時候就會打開這個"文件夾"

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTMyOTUyMTc4LTUwNTQxMTgwNC5wbmc=.jpg

并且展示內容,添加多少就展示多少,并且按添加的順序展示

5、將 菜單 添加到 菜單欄 中 : menuBar.Append(fileMenu, title = "File")

之前我們只是構建了一個上圖紅框+File菜單 的一個整體對象:fileMenu。

然后我們要把這個 菜單對象 添加到菜單欄中。

6、將該 菜單欄 設置為我們窗口框架的“菜單欄” : self.SetMenuBar(menuBar)

即將之前建立的 菜單欄對象 放到窗口上去。

7、綁定 菜單事件 : self.Bind(wx.EVT_MENT, self.menuHandler)

調用 Bind() 這個綁定事件的函數,因為其他組件 比如按鈕 編輯框 都有事件。

所以這里的 wx.EVT_MENT 是表示綁定的是 菜單事件。

menuHandler() 是自定義函數 用來菜單事件。

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTMzODU1MjI1LTEzNDgzMzQzODEucG5n.jpg

id = event.GetId() 用來判斷單擊的 菜單項。

函數參數名稱:event 不能變,只能是這個單詞。

8、窗口框架的處理 : 與菜單欄無關了

例如 調整大小、出現位置、是否可見

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTM0MTQyMzM0LTc1MTEwMTM2Mi5wbmc=.jpg

2、各項詳解(參考其他)

1、用到的 class :

菜單欄 : wx.MenuBar 類

wx.MenuBar()

wx.MenuBar(n, menus, titles, style)

有一個參數的構造函數,此外還有一個默認的。

參數“n”表示的菜單的數目。Menu是菜單和標題的數組和字符串數組。如果style參數設置為wx.MB_DOCKABLE,菜單欄可以停靠。

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTM1NjI2MTE1LTM4MTE0MTczNC5wbmc=.jpg

菜單 : wx.Menu 類

wx.Menu類對象是一個或多個菜單項,其中一個可被用戶選擇的下拉列表。

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTM1NjAwOTkwLTE4NjcwNDUyOS5wbmc=.jpg

該開始 new 菜單對象的時候 只要 fileMenu = wx.Menu() 即可

之后添加菜單項目的時候,可直接使用 Append() 函數添加,或 wx.MenuItem 類的一個對象被追加。

wx.Menu.Append(id, text, kind)

Item = Wx.MenuItem(parentmenu, id, text, kind)

wx.Menu.Append(Item)

菜單項:wx.MenuItem 類

當我們 new 菜單項對象時 需要填幾個參數。

newItem = wx.MenuItem(parentMenu, id, text, kind)

其中 :

parentMenu 為其 菜單的對面,比如上文提到的 newMenu 菜單項的 parentMenu 為 fileMenu

id 為該菜單項的 id 到時候處理 菜單項時間的時候需要用到滴

text 為這個菜單項的名稱

kind 為該菜單項的類型

①注冊 快捷鍵的方法 :參數text = "名稱/t快捷鍵"

比如 text = "Quit/tCtrl+Q"

這樣就注冊了 Ctrl + Q 的快捷鍵

②其他類型菜單項的方法

菜單項有 3 種:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTQxNjA5MDIxLTQxMjAxMjUyLnBuZw==.jpg

只需要 參數 kind = 相關類型常量即可

2、感想

這個里面的很詳細,且例子經典。

o.o 要是先看不懂,就敲抄一邊會好很多。

關于wxPyton 中菜單欄的運用的,以下代碼能夠很好的展示相關的操作方法。

3、樣例代碼

#coding:utf-8

#author:Twobox

import wx

class Mywin(wx.Frame):

def __init__(self, parent, title):

super(Mywin, self).__init__(parent, title = title)

self.InitUI()

def InitUI(self):

#創建一個菜單欄

menuBar = wx.MenuBar()

#創建一個菜單 1

fileMenu = wx.Menu()

#創建一個菜單項 1-1

newItem = wx.MenuItem(fileMenu, id = wx.ID_NEW, text = 'New', kind = wx.ITEM_NORMAL)

fileMenu.AppendItem(newItem)

#添加一行線

fileMenu.AppendSeparator()

#創建一個子菜單 1-2

editMenu = wx.Menu()

#創建三個子菜單的菜單項目 1-2-1 and 1-2-2 and 1-2-3

cutItem = wx.MenuItem(editMenu, id = 122, text = "Cut", kind = wx.ITEM_NORMAL)

copyItem = wx.MenuItem(editMenu, id = 121, text = "Copy", kind = wx.ITEM_NORMAL)

pasteItem = wx.MenuItem(editMenu, id = 123, text = "Paste", kind = wx.ITEM_NORMAL)

editMenu.AppendItem(copyItem)

editMenu.AppendItem(cutItem)

editMenu.AppendItem(pasteItem)

#把子菜單 1-2 添加到菜單 1 中

fileMenu.AppendMenu(wx.ID_ANY, "Edit", editMenu)

# 添加一行線

fileMenu.AppendSeparator()

#添加兩個單選框 1-3 and 1-4

radio1 = wx.MenuItem(fileMenu, id = 13, text = "Radio_One", kind = wx.ITEM_RADIO)

radio2 = wx.MenuItem(fileMenu, id = 14, text = "Radio_Two", kind = wx.ITEM_RADIO)

fileMenu.AppendItem(radio1)

fileMenu.AppendItem(radio2)

#PS.單選框 只在自己區域之間(兩行線之間) 相互作用

# 添加一行線

fileMenu.AppendSeparator()

#添加一個 可選中 的菜單項 1-5

fileMenu.AppendCheckItem(id = 15, item = "Check")

#添加一個 菜單項 1-6 并注冊快捷鍵

quit = wx.MenuItem(fileMenu, id = wx.ID_EXIT, text = "Quit\tCtrl+Q", kind = wx.ITEM_NORMAL)

fileMenu.AppendItem(quit)

#將 fileMenu 菜單添加到菜單欄中

menuBar.Append(fileMenu, title = 'File')

#設置窗口框架的菜單欄為 menuBar

self.SetMenuBar(menuBar)

#綁定事件處理

self.Bind(wx.EVT_MENU, self.menuHandler)

#讓其在屏幕中間打開調整大小展示

self.SetSize((300,400))

self.Centre()

self.Show()

def menuHandler(self, event):

id = event.GetId()

if id == wx.ID_NEW:

print("NEW")

if id == wx.ID_EXIT:

exit(0)

if __name__ == "__main__":

ex = wx.App()

Mywin(None, 'Menu - Test')

#Mywin(None, 'Menu - Test') #可以同時打開兩個窗口 果然體現面向對象的程序開發思想

ex.MainLoop()

2017-08-20 14:21:26

[Python] wxPython 基本控件 (轉)

轉自:http://www.cnblogs.com/wangjian8888/p/6028777.html 一.靜態文本控件 wx.StaticText(parent, id, label, pos= ...

[Python] wxPython 編輯框組件學習總結 (原創)

1.總結 1.常用4種 編輯框 的構造 1.普通編輯框 單行輸入的簡單編輯框 (?為所在框的對象,同下) self.textBox = wx.TextCtrl(parent = ?) 2.密碼編輯框 ...

python之Tkinter控件學習

轉載自 ?http://www.cnblogs.com/kaituorensheng/p/3287652.html#_label0 閱讀目錄 1.?產品介紹 2.?設計規劃 3. 相關知識 4. 源碼 ...

Python Tkinter 基礎控件學習

# -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get ...

wxPython控件學習之wx.grid.Grid 表格控件

wxPython控件學習之wx.grid.Grid (包括對GridCellEditor和GridCelRender的擴展,以支持更多的grid cell 樣式, 以GridCellColorEdit ...

轉)delphi chrome cef3 控件學習筆記 (二)

(轉)delphi chrome cef3 控件學習筆記 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原創?2016 ...

IOS學習筆記(四)之UITextField和UITextView控件學習

IOS學習筆記(四)之UITextField和UITextView控件學習(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

DevExpress控件學習總結(轉)

DevExpress控件學習總結 ? 1.Navigation?&?Layout 1.1?Bar?Manager 如果想在窗體或用戶控件(user?control)上添加工具條(bars)或彈 ...

Python Tkinter基礎控件入門實例

分享一個Python Tkinter基礎控件用法的入門例子,包括窗口的顯示.顯示內置圖片.彈出窗口.菜單等. 例子,Python Tkinter基礎控件的用法 # -*- coding: utf-8 ...

隨機推薦

mac的webdriver自動化

下載webdriver-chrome的連接:http://chromedriver.storage.googleapis.com/index.html

MVVM小記

這篇小記源自于codeproject上的一篇文章?http://www.codeproject.com/Articles/100175/Model-View-ViewModel-MVVM-Explai ...

深入理解計算機系統(2.2)---布爾代數以及C語言上的位運算

布爾代數上的位運算 布爾代數是一個數學知識體系,它在0和1的二進制值上演化而來的. 我們不需要去徹底的了解這個知識體系,但是里面定義了幾種二進制的運算,卻是我們在平時的編程過程當中也會遇到的.這四種運 ...

JS中的集中頁面跳轉的方法

第一種:???

style中position的屬性值具體解釋

Position的英文原意是指位置.職位.狀態.也有安置的意思.在CSS布局中,Position發揮著非常關鍵的數據,非常多容器的定位是用Position來完畢. Position屬性有四個可選值,它 ...

渲染函數render和函數式組件

vnode對象 vnode對象包括(vnode并不是vue實例,而是vue實例中渲染函數render執行后生成的結果) this.tag = tag // 當前節點標簽名 this.data = da ...

cookie、localStorage、sessionStorage的區別

localStorage - 沒有時間限制的數據存儲 sessionStorage - 針對一個 session 的數據存儲 共同點:sessionStorage.localStorage和cooki ...

Visual Studio 2017 + Python3.6安裝scipy庫

Windows10下安裝scipy很麻煩,直接在命令行下使用pip install scipy無法安裝,但可以借助VS2017的集成環境來安裝. (1)首先在Visual Studio Install ...

How to calculate elapsed / execute time in Java

How to calculate elapsed / execute time in JavaIn Java, you can use the following ways to measure el ...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529081.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529081.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529081.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 8三星note8,信息太多很煩瑣?告訴你三星Note8有妙招

不知從何時開始,我們眼前的信息變得豐富而繁雜。簡潔的新聞無需經過報紙過濾,發生數分鐘已經城皆知。預測晴雨也無需依靠天氣先生,點亮手機即可洞悉風雨。生活在信息時代的我們僅用幾英寸的窗口觀察世界,信息的洪流難免會遮蔽眼前…

realloc函_realloc(重新分配內存空間的函數)

在頭文件中定義void * realloc(void * ptr,size_t new_size);重新分配給定的內存區域。它必須預先分配malloc(),calloc()或realloc()尚未釋放與free或呼叫realloc。否則,結果是不確定的。重新分配由以下兩者之一完成:a)ptr如有可能…

python做excel表格教程視頻_基于Python實現excel表格讀寫

首先安裝對應的xlrd和xlwt 打開cmd命令窗口輸入pip install xlrd和pip install xlwt就可以安裝。之后輸入pip list檢查是否成功配置:xlrd操作# 接下來就是常用的語法操作: excel_data xlrd.open_workbook(文件路徑)#得到對應的工作表 sheet excel_data…

虛無鴻蒙哪個厲害,【圖說鴻蒙】鴻蒙設定之七柱神(五)

原標題:【圖說鴻蒙】鴻蒙設定之七柱神(五)七柱神玄冥神飛來流去本無心,無空無我混天塵。幻作人形深簡出,不是老嫗是海神。玄冥神 虛無荒海司掌海洋、流動之力 神威之色為藍執掌海洋、流動之力的神,是神道“熵”的最高掌控者&#…

java lambda 排序_Java8特性:Lambda表達式之概念篇

Java自誕生已經有十幾個年頭了,目前也已經發布了第十三個大版本,其中Java8是常用的版本中最新的一個版本。而Java8最大的特性就是:Lambda表達式、函數式接口和Stream流。本篇我只介紹Lamda表達式的概念以及簡單使用,至于別的我打算…

jq獲取表格里的checkbox_Python抓取網頁表格(一)

Python有很多包可以抓取數據,如selenium、requests、scrapy、pandas,每個包都有其適用性,個人認為在抓取數據時,代碼簡潔性和數據獲取的準確性是需要考慮的因素,時間快慢倒不用太在意,畢竟用python抓數據本…

html一個空格多少像素,一個空格占幾個字符?

一個空格通常占2個字符,但有些特殊情況占用3個字符。在程序中,空格占用的字符數取決于程序使用的字符集,如:1、使用多字節字符集時,半角空格占用1個字節,全角空格占用2個字節。2、使用Unicode字符集時&…

各種摳圖動態圖片_不用手。自動、智能摳圖,圖片去背景

BgEraser 是一款基于 AI 的自動、智能圖片去背景工具,無需勾選可用、可刪除區域,上傳圖片,立即下載即扣圖完成的圖片。AppinnBgEraser 真是懶人的福音。在此之前,比如很好用的在線去背景服務 remove.bg,是需要用戶手動…

html用dom顯示xml,html DOM文件引用一個XML文件將不會在瀏覽器中打印

我完全不熟悉這一點,我正在上課,現在變成了一個令人頭疼的問題。我有這個HTML DOM文件,它引用了一個XML文件,我需要在瀏覽器中顯示在屏幕上。它應該只打印標題,標題,第一個,最后一個&#xff0c…

bigdecimal 保留兩位小數_Python的保留小數及對齊

Python的保留小數:方法1:用round函數(有坑)。median 12.3004886print(round(median, 2)) # 保留兩位小數print(round(median, 3)) # 保留三位小數print(round(median, 4)) # 保留四位小數運行結果:12.312.312.3005可以看出Python中的r…

分布式光伏補貼_四川:2020年起工商業分布式光伏已無補貼

來源:四川省發改委日前,四川省發改委發布《四川省分布式光伏建設管理相關政策》,對該省分布式光伏發電項目定義、分類、備案程序、需要國補的項目相關政策進行了梳理。值得注意的是,文件明確,自2020年起,四…

用計算機玩游戲最簡單的方法,如何制作電腦簡易命令小游戲

滿意答案sylvia10172019.01.20采納率:48% 等級:7已幫助:460人簡單的Dos小游戲開始學習java,這周只簡單的學習了C的基本語法:輸入輸出,判斷循環,因此用這些東西在java上瞎寫了一個DOS小游戲。…

pandas filter_數據分析之Pandas操作(2)

接著數據分析之Pandas操作(1)的介紹,本次介紹在實際應用場景中幾個常用的函數。還是以titanic生存數據為例,本次需要導入pandas 、numpy 、scipy三個工具包。import pandas as pdimport numpy as npfrom scipy.stats import zscoretrain_data pd.read_c…

ios 隱藏app的插件_等了5年終于復活,iPhone上最干凈好用的微博App

來,先跟小虎妞一起回憶下2013年的微博客戶端。(圖源水印)那時候,首頁還是按時間順序來的,也沒有赴美產子、老爺夫人知道錯了的廣告。后來,隨著微博一次次改版,客戶端越來越臃腫,第三方微博客戶端像雨后春筍…

html高度為零,html中父div高度為0的原因

問題:在chrome中看到父div高度為0,但里面明明有內容。原因:簡單的講原因就是子元素如果設了float屬性,這些子元素就脫離了父div容器的控制,所以父容器認為里面沒內容,高度自然變成了0.解決辦法:…

算法訓練營Day23

#Java #回溯 #組合問題 開源學習資料 Feeling and experiences: 組合總和III:力扣題目鏈接 找出所有相加之和為 n 的 k 個數的組合,且滿足下列條件: 只使用數字1到9每個數字 最多使用一次 返回 所有可能的有效組合的列表 。…

matlab調用python_從MATLAB調用Python函數

嘗試使用此MEX文件從MATLAB實際調用Python,而不是像其他人建議的那樣。它提供了相當不錯的集成:http : //algoholic.eu/matpy/ 您可以輕松地執行以下操作: [X,Y]meshgrid(-10:0.1:10,-10:0.1:10); Zsin(X)cos(Y); py_export(X,Y,Z) stmt spr…

macbook配置java環境變量_配置mac上Java環境變量

從ubuntu上轉到mac上來做開發,一切配置都要重新開始1. 下載jrehttp://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html選擇合適的版本和安裝包2. 一鍵安裝3. 查看是否安裝成功scarlettdeMacBook-Air:~ scarlettxu$ java -versionjava vers…

地圖 插件 html 經緯度,如何往地圖位置(經緯度)選擇插件頁面傳遞經緯度

查看了一下代碼,發現了解決辦法;在edit.html中:{:__(Longitude)}:{:__(Latitude)}:在對應的js代碼中:edit: function () {$("[data-toggleaddresspicker]").data("lat-id",c-latitude);$("[data-togglea…

python調用node_在node中執行python腳本

Node.js多進程基礎 Node.js 是以單線程的模式運行的,但它使用的是事件驅動來處理并發。這樣有助于我們在多核 cpu 的系統上創建多個子進程,從而提高性能。 每個子進程總是帶有三個流對象:child.stdin, child.stdout 和child.stderr。他們可能…