名稱解釋:GUI編程---用戶圖形界面編程。
很多教程在hello world后树枫,就開始介紹語(yǔ)法啦直焙、組件啦、啥啥啦之類的玩意兒砂轻。
說(shuō)實(shí)話奔誓,我就特?zé)┻@種教程。麻蛋的老子啥都不懂搔涝,說(shuō)一堆破玩意兒丝里,一點(diǎn)意思都沒(méi)有。
如果我能寫一段代碼体谒,一試就有效果的杯聚,程序能響應(yīng)我的操作的,那多有意思抒痒?
我們寫界面幌绍,其實(shí)就是一個(gè)目的:我點(diǎn)擊,程序反應(yīng)故响。
這個(gè)過(guò)程傀广,在C#中叫做“事件”,在DearPyGui中彩届,叫做“回調(diào)”伪冰。
老規(guī)矩:上圖、上代碼樟蠕,上解釋(這段代碼中有幾個(gè)點(diǎn)需要解釋一下贮聂,否則會(huì)迷糊)
需求:一段文字(Text)靠柑,一個(gè)按鈕(Button)。點(diǎn)擊按鈕后吓懈,文字變化歼冰、顏色變化
一、上圖
2耻警、代碼
with dpg.window(label='test_dearpygui_hello_world', width=400, height=100,
pos=(20, 20)):
# 增加一個(gè)文本控件(組件隔嫡,想叫啥名自己選),用來(lái)顯示文本
# default_value 文本的初始字符串
dpg.add_text(label='mytxt', default_value='Hello World', tag='txt')
# 回調(diào)函數(shù)(你可以簡(jiǎn)單理解為事件)
def changetxt():
# 更改文本的字符串
dpg.set_value('txt', 'Happy Chinese New Year')
# 更改文本的顏色
dpg.configure_item('txt', color=(255, 0, 0))
# 增加一個(gè)按鈕
dpg.add_button(label='Change_text', callback=changetxt)
三甘穿、解釋(說(shuō)給GUI新人小白聽的腮恩,老鳥可飄過(guò))
按照一般的編程語(yǔ)言設(shè)定(例如C#)笋庄,一個(gè)組件(控件)有以下兩個(gè)重要的東西:
1囊拜、屬性
比如text組件,屬性有:初始文字(default_value)义矛、文字的顏色(color)妨托,組件的位置(pos)缸榛,組件是否顯示(show)等等。
2兰伤、事件(方法内颗、回調(diào))
比如Button組件,最常用的事件就是Click(單擊)敦腔。當(dāng)然還有類似:Double_Click(雙擊)之類的均澳。
屬性主要負(fù)責(zé)顯示出來(lái)的樣式,事件主要負(fù)責(zé)執(zhí)行的操作符衔。
就比如你現(xiàn)在手中的鍵盤
屬性:鍵盤的顏色找前、鍵盤上有多少鍵、鍵盤的材質(zhì)……
事件:點(diǎn)擊‘A’后判族,會(huì)輸出‘A’這個(gè)字符……
屬性和事件共同滿足了界面的所有需求(像不像在定義一個(gè)“類”躺盛?嘿嘿~)。
在DearPyGui中屬性在創(chuàng)建組件時(shí)就可以設(shè)置了形帮,例如:
dpg.add_text(label='mytxt', default_value='Hello World', tag='txt')
這里的label槽惫、default_value、tag都是屬性辩撑。當(dāng)然 界斜,也可以通過(guò)其它方式來(lái)設(shè)置,后面我會(huì)介紹到合冀,這里我們就不展開了各薇。
text組件所有的屬性如下圖:
這些屬性大家自己看看、試試就知道了【桑現(xiàn)在只重點(diǎn)講3個(gè)屬性:
1峭判、default_value
default_value:在text組件被初始化(創(chuàng)建)的時(shí)候顯示的文字开缎。
2、label
label:將組件的用途給用戶看的朝抖。
上面代碼中text組件啥箭,因?yàn)樗约壕褪秋@示文字的谍珊,所以它的label屬性是默認(rèn)不顯示的(當(dāng)然可以通過(guò)更改show屬性來(lái)顯示出來(lái)治宣,這里就不介紹了)。
但對(duì)一些組件砌滞,label最好能夠顯示侮邀。比如用戶名和密碼輸入框:
如果不顯示,使用人就搞不懂這個(gè)輸入框的用途贝润。
3绊茧、tag(標(biāo)簽)
tag:唯一標(biāo)識(shí)符,不顯示打掘,不允許重復(fù)华畏。
這玩意兒是干嘛滴?它與label有啥區(qū)別尊蚁?
如果說(shuō)label是人的名字(允許重復(fù)),tag就相當(dāng)于身份證號(hào)亡笑,不允許重復(fù)。
它是用來(lái)讓程序能定位組件(控件)的横朋。
舉個(gè)栗子:
label:老師在課堂上吼叫:“張三仑乌,滾出教室去”,下面一堆張三都跑出去了琴锭。
tag:老師在課堂上吼叫:“身份證號(hào)是ABC的滾出去”晰甚,下面身份證號(hào)是ABC的的張三灰溜溜的就滾出去了,其余的張三則可以泰然的坐著偷笑决帖。
栗子吃了厕九,咱就上代碼看。
需求:點(diǎn)擊按鈕地回,殺死日本人
dpg.add_input_text(label='JP', default_value='Japanese', tag='xiaoriben')
dpg.add_input_text(label='CN', default_value='Chinese', tag='zhongguoren')
def kill():
dpg.set_value(item='xiaoriben', value='kill Japanese')
dpg.add_button(label='kill Japanese', callback=kill)
當(dāng)點(diǎn)擊按鈕時(shí)扁远,tag為'xiaoriben'的輸入框,變成kill Japanese落君。
看到?jīng)]穿香?我們是通過(guò)tag來(lái)定位組件的,而不是通過(guò)label绎速。
好了皮获。本章我們粗略學(xué)習(xí)了GUI編程,以及GUI編程中必然要涉及的屬性和事件這倆玩意兒纹冤。
(事件在DearPyGui中的名稱是回調(diào)洒宝,其實(shí)就是換個(gè)名字罷了购公,沒(méi)啥大不了的,本章以后我們就叫回調(diào)了哈)雁歌。
再次總結(jié)一下:
屬性:控制控件的顯示樣式宏浩、初始值
回調(diào):實(shí)現(xiàn)控件的用途
我剛開始自學(xué)GUI的時(shí)候,差點(diǎn)沒(méi)讓這倆玩意兒搞死靠瞎。真心希望通過(guò)我以上比較粗淺(俗)的語(yǔ)言比庄,讓GUI編程的新手小白們能夠在這方面少走彎路吧。
如果您是剛開始接觸GUI編程乏盐,建議上手玩一玩佳窑。挺有意思的。