国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10

這篇具有很好參考價(jià)值的文章主要介紹了《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

我們不難發(fā)現(xiàn),幾乎每一個(gè)應(yīng)用程序都有一些相同的地方,比如說:標(biāo)題欄、狀態(tài)欄、邊框、滾動(dòng)條、工作區(qū)。還有的就是 菜單。

傳統(tǒng)的菜單有大家熟悉的 File,Edit,Help等,點(diǎn)開之后,是下拉菜單,今天我們就來學(xué)習(xí)使用 tkinter 如何制作這樣子的菜單。tkinter 提供了一個(gè)叫做 Menu 的組件,主要是用于實(shí)現(xiàn)頂級(jí)菜單、下拉菜單和彈出菜單。

由于該組件是由底層代碼來實(shí)現(xiàn)的,并且已經(jīng)優(yōu)化好了,我們這里不建議你自行通過按鈕或者其他的組件來實(shí)現(xiàn)菜單的功能,我知道你可以。但是Python的開發(fā)原則就是有得用,你就別自己瞎搞。我說的是正式開發(fā)中,在學(xué)習(xí)中,沒事搞一搞是可以讓我們學(xué)習(xí)到更多知識(shí)的。

我們先來實(shí)現(xiàn)創(chuàng)建一個(gè)頂級(jí)菜單:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. menubar = tk.Menu(root)

  6. menubar.add_command(label = "hello", command = callback)

  7. menubar.add_command(label = "quit", command = root.quit)

  8. root.config(menu = menubar)#把創(chuàng)建的 menubar 與根窗口的 menu 綁定,才會(huì)顯示菜單

  9. root.mainloop()

《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10,python零基礎(chǔ),python

我們接下來實(shí)現(xiàn)下拉菜單,我們要實(shí)現(xiàn)下拉菜單,例如我們點(diǎn)一下 hello,它會(huì)出來很多其他的選項(xiàng),而不是執(zhí)行一個(gè)命令,方法也是大同小異的,只是說下拉菜單我們把它們添加到主菜單上,而不是窗口上,我們舉例說明:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. menubar = tk.Menu(root)

  6. ###創(chuàng)建文件菜單

  7. filemenu = tk.Menu(menubar)

  8. filemenu.add_command(label = "打開", command = callback)

  9. filemenu.add_command(label = "保存", command = callback)

  10. #我們還創(chuàng)建下拉菜單之間的分割線

  11. filemenu.add_separator()

  12. filemenu.add_command(label = "退出", command = root.quit)

  13. #創(chuàng)建級(jí)聯(lián)菜單

  14. menubar.add_cascade(label = "文件", menu = filemenu)

  15. ###創(chuàng)建編輯菜單

  16. editmenu = tk.Menu(menubar, tearoff = False) #tearoff = False ,就是沒有下拉菜單頂部的虛線

  17. editmenu.add_command(label = "剪切", command = callback)

  18. editmenu.add_command(label = "拷貝", command = callback)

  19. editmenu.add_command(label = "粘貼", command = root.quit)

  20. #創(chuàng)建級(jí)聯(lián)菜單

  21. menubar.add_cascade(label = "編輯", menu = editmenu)

  22. root.config(menu = menubar)#把創(chuàng)建的 menubar 與根窗口的 menu 綁定,才會(huì)顯示菜單

  23. root.mainloop()

《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10,python零基礎(chǔ),python《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10,python零基礎(chǔ),python

我們來說一下 tearoff 的作用,tearoff 默認(rèn)為 True,顯性特點(diǎn)就是有一點(diǎn)虛線,當(dāng)我們點(diǎn)擊這一條虛線時(shí):(菜單可以被撕下(tearoff))

《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10,python零基礎(chǔ),python

我們?cè)賮碚f一個(gè)彈出菜單:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. menubar = tk.Menu(root)

  6. menubar = tk.Menu(menubar)

  7. menubar.add_command(label = "撤銷", command = callback)

  8. menubar.add_command(label = "退出", command = root.quit)

  9. frame = tk.Frame(root, width =512, height = 512)

  10. frame.pack()

  11. def popup(event):

  12. menubar.post(event.x_root, event.y_root)

  13. frame.bind("<Button-3>", popup) #<Button-3>就是鼠標(biāo)右鍵

  14. root.mainloop()

運(yùn)行后,點(diǎn)擊鼠標(biāo)右鍵:

《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10,python零基礎(chǔ),python

菜單不僅可以添加我們普通的命令行(add_command),事實(shí)上我們還可以添加 像 Checkbutton(多選按鈕)和 Radiobutton(單選按鈕)這樣子的菜單項(xiàng),它們的用法就和? Checkbutton 和 Radiobutton 組件是差不多的。

我們繼續(xù)創(chuàng)建一個(gè)帶有 checkbutton 和 radiobutton 的菜單給大家看看:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. menubar = tk.Menu(root)

  6. openVar = tk.IntVar()

  7. saveVar = tk.IntVar()

  8. quitVar = tk.IntVar()

  9. filemenu = tk.Menu(menubar, tearoff = False)

  10. filemenu.add_checkbutton(label = "打開", command = callback, variable = openVar)

  11. filemenu.add_checkbutton(label = "保存", command = callback, variable = saveVar)

  12. filemenu.add_separator()

  13. filemenu.add_checkbutton(label = "退出", command = root.quit, variable = quitVar)

  14. menubar.add_cascade(label = "文件", menu = filemenu)

  15. editVar = tk.IntVar()

  16. editmenu = tk.Menu(menubar, tearoff = False)

  17. editmenu.add_radiobutton(label = "剪切", command = callback, variable = editVar, value = 1)

  18. editmenu.add_radiobutton(label = "拷貝", command = callback, variable = editVar, value = 2)

  19. editmenu.add_radiobutton(label = "粘貼", command = root.quit, variable = editVar, value = 3)

  20. menubar.add_cascade(label = "編輯", menu = editmenu)

  21. root.config(menu = menubar)

  22. root.mainloop()

我們接下來介紹一個(gè)新的組件 Menubutton。

Menubutton 組件是一個(gè)與Menu 組件 相關(guān)聯(lián)的按鈕,(事實(shí)上就是Menu + Button),它可以放在窗口中的任意位置,并且在被按下時(shí)彈出下拉菜單。

這個(gè)組件是有一些歷史意義的,因?yàn)閯傞_始是沒有頂級(jí)菜單的,那么就用 Menubutton 實(shí)現(xiàn)一個(gè)個(gè)按鈕在上面,點(diǎn)一個(gè)按鈕就出現(xiàn)菜單。

現(xiàn)在該組件適用于你希望菜單按鈕出現(xiàn)在其他位置的時(shí)候。

舉個(gè)例子:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. def callback():

  4. print("你好~")

  5. mb = tk.Menubutton(root, text = "點(diǎn)我", relief = "raised")

  6. mb.pack()

  7. filemenu = tk.Menu(mb, tearoff = False)

  8. filemenu.add_command(label = "打開", command = callback)

  9. filemenu.add_command(label = "保存", command = callback)

  10. filemenu.add_separator()

  11. filemenu.add_command(label = "退出", command = root.quit)

  12. mb.config(menu = filemenu)

  13. root.mainloop()

《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10,python零基礎(chǔ),python

我們接下來 介紹一下 Optionmenu(選擇菜單)。

OptionMenu(選擇菜單)事實(shí)上是下拉菜單的改版,它的發(fā)明彌補(bǔ)了Listbox 組件無法實(shí)現(xiàn)下拉列表框的遺憾。因?yàn)槭聦?shí)上創(chuàng)建一個(gè)選擇菜單,就跟一個(gè)下拉列表框是一個(gè)道理的。我們來看一下它實(shí)現(xiàn)的效果就知道了。

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. variable = tk.StringVar()

  4. variable.set("one")

  5. w = tk.OptionMenu(root, variable, "one", "two", "three")

  6. w.pack()

  7. root.mainloop()

《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10,python零基礎(chǔ),python

最后,演示一下,如何將很多項(xiàng)添加到選擇菜單中,就是很多選項(xiàng)在一個(gè)列表或者元組中,如何將他們添加到 OptionMenu 菜單中,

 
  1. import tkinter as tk

  2. OPTIONS = [

  3. "Wuhan",

  4. "Beijing",

  5. "Shanghai",

  6. "Tianjin",

  7. "Aomen",

  8. "Xianggang",

  9. "Hankou"

  10. ]

  11. root = tk.Tk()

  12. variable = tk.StringVar()

  13. variable.set(OPTIONS[0])

  14. w = tk.OptionMenu(root, variable, *OPTIONS) #*號(hào)有一個(gè)解包的功能,如果沒有 * 號(hào),就把整個(gè)列表當(dāng)做一個(gè)選項(xiàng)了

  15. w.pack()

  16. root.mainloop()

《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10,python零基礎(chǔ),python

注意:星號(hào)(*)作為形參的時(shí)候是起到“打包”的作用,相反,作為實(shí)參的時(shí)候是起到“解包”的作用。

一、星號(hào)(*)作為形參,表示調(diào)用可變參數(shù)函數(shù):

通過在形參前加一個(gè)星號(hào)(*)或兩個(gè)星號(hào)(**)來指定函數(shù)可以接收任意數(shù)量的實(shí)參。

 
  1. def fun1(*args):? ?? ??

  2. ? ?? ???print(type(args))?

  3. ? ?? ???print(args)

  4. ? ?? ???

  5. fun1(1, 2, 3, 4, 5)

  6. # 輸出:

  7. # <class 'tuple'>

  8. # (1, 2, 3, 4, 5)

 
  1. def fun2(**args):

  2. ? ?? ???print(type(args))

  3. ? ?? ???print(args)

  4. ? ?? ???

  5. fun2(a=1, b=2, c=3, d=4, e=5)

  6. # 輸出:

  7. # <class 'dict'>

  8. # {'e': 5, 'a': 1, 'c': 3, 'd': 4, 'b': 2}

  • 從兩個(gè)示例的輸出可以看出:當(dāng)參數(shù)形如 *args 時(shí),傳遞給函數(shù)的任意個(gè)實(shí)參會(huì)按位置打包成一個(gè)元組(tuple);
  • 當(dāng)參數(shù)形如 **args 時(shí),傳遞給函數(shù)的任意個(gè) key = value 實(shí)參會(huì)被包裝進(jìn)一個(gè)字典(dict)。

二、星號(hào)(*)作為實(shí)參時(shí),表示通過解包參數(shù)調(diào)用函數(shù)

有打包就有解包,通過在實(shí)參前加一個(gè)星號(hào)(*)或兩個(gè)星號(hào)(**)來對(duì)列表(list)、元組(tuple)或字典(dict)進(jìn)行解包:

 
  1. >>> a = [1, 2, 3, 4, 5]

  2. >>> b = (1, 2, 3, 4, 5)

  3. >>> fun1(*a)

  4. (1, 2, 3, 4, 5)

  5. >>> fun1(*b)

  6. (1, 2, 3, 4, 5)

  7. >>> c = {'one':1, 'two':2, 'three':3}

  8. >>> fun2(**c)

  9. {'two': 2, 'one': 1, 'three': 3}

  10. >>>?

總結(jié):一個(gè)星號(hào)(*)用來打包和解包序列,兩個(gè)星號(hào)(**)用來打包和解包字典。文章來源地址http://www.zghlxwxcb.cn/news/detail-617883.html

到了這里,關(guān)于《零基礎(chǔ)入門學(xué)習(xí)Python》第073講:GUI的終極選擇:Tkinter10的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python GUI編程(Tkinter)

    Python 提供了多個(gè)圖形開發(fā)界面的庫,幾個(gè)常用 Python GUI 庫如下: Tkinter: Tkinter 模塊(Tk 接口)是 Python 的標(biāo)準(zhǔn) Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多數(shù)的 Unix 平臺(tái)下使用,同樣可以應(yīng)用在 Windows 和 Macintosh 系統(tǒng)里。Tk8.0 的后續(xù)版本可以實(shí)現(xiàn)本地窗口風(fēng)格,并良好地運(yùn)行在絕大

    2024年02月14日
    瀏覽(21)
  • python中tkinter實(shí)現(xiàn)GUI程序:三個(gè)實(shí)例

    python中tkinter實(shí)現(xiàn)GUI程序:三個(gè)實(shí)例

    Python作為一種多功能、易于學(xué)習(xí)的編程語言,不僅僅在數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、網(wǎng)絡(luò)開發(fā)等領(lǐng)域大放異彩,也在圖形用戶界面(GUI)開發(fā)中扮演著重要角色。其中,Tkinter庫作為Python的標(biāo)準(zhǔn)GUI庫,以其簡(jiǎn)單易用而廣受歡迎。 一位粉絲希望了解,如何實(shí)戰(zhàn)python中tkinter如何實(shí)現(xiàn)GUI程

    2024年02月03日
    瀏覽(21)
  • Python制作簡(jiǎn)易計(jì)算器(GUI)---Tkinter

    Python制作簡(jiǎn)易計(jì)算器(GUI)---Tkinter

    tkinter模塊是Python標(biāo)準(zhǔn)的TK GUI工具包接口,可以實(shí)現(xiàn)一些較為簡(jiǎn)單GUI的創(chuàng)建。 麻雀雖小,五臟俱全 TK工具集使用TCL(Tool Command Language)語言開發(fā) 運(yùn)行相同的程序時(shí),運(yùn)行速度快于pyqt5 組件能滿足基本使用 程序界面較簡(jiǎn)陋 開發(fā)時(shí),使用的語句更短更易懂 Python內(nèi)置的標(biāo)準(zhǔn)庫 Qt框

    2024年02月08日
    瀏覽(27)
  • 【Python】線程threading與GUI窗口tkinter結(jié)合應(yīng)用

    【Python】線程threading與GUI窗口tkinter結(jié)合應(yīng)用

    Python的threading模塊是一個(gè)強(qiáng)大的工具,它提供了高級(jí)別的線程編程接口。通過這個(gè)模塊,Python程序員可以在應(yīng)用程序中實(shí)現(xiàn)多線程并發(fā)執(zhí)行。 線程(Thread)是程序執(zhí)行流的最小單元,被包涵在進(jìn)程之中,是進(jìn)程中的一個(gè)實(shí)體,是被系統(tǒng)獨(dú)立調(diào)度和分派的基本單位。線程自己不

    2024年01月19日
    瀏覽(28)
  • 基于Python+Tkinter GUI 的模式識(shí)別水果分類小程序

    基于Python+Tkinter GUI 的模式識(shí)別水果分類小程序

    ? 采用Python語言編寫,并結(jié)合Tkinter GUI工具制作交互式小程序開發(fā),實(shí)現(xiàn)了簡(jiǎn)單的水果的邊緣提取和分類。如圖1-A,用戶可以自定義選擇路徑并輸出,同時(shí)可以在對(duì)話框中輸入/輸出結(jié)果,如圖1-B。 A 界面展示 B 交互展示 ? 圖1 Tkinter GUI 展示 本次課程實(shí)踐一整體設(shè)計(jì)分為三個(gè)部

    2024年02月09日
    瀏覽(150)
  • Python tkinter(GUI編程)模塊教程:打造出精美圖形用戶界面

    隨著程序越來越復(fù)雜,命令行已經(jīng)無法滿足我們的需求,圖形化界面已成為當(dāng)前主流的界面設(shè)計(jì)。在Python中,tkinter是一種簡(jiǎn)單易用的GUI編程工具,可以幫助我們快速地創(chuàng)建圖形用戶界面。本文將通過實(shí)例詳細(xì)介紹如何使用Python tkinter模塊來打造出精美的圖形用戶界面。 安裝

    2024年02月13日
    瀏覽(33)
  • Python進(jìn)階知識(shí)(2)—— 什么是GUI編程?一起來學(xué)習(xí)用Python,Tkinter“做畫”吧

    Python進(jìn)階知識(shí)(2)—— 什么是GUI編程?一起來學(xué)習(xí)用Python,Tkinter“做畫”吧

    All things are difficult before they are easy. 凡事必先難后易。 GUI是Graphical User Interface(圖形用戶界面)的縮寫 。它是指通過圖形化的方式,為人們提供更加友好、直觀的用戶界面,使得用戶可以通過鼠標(biāo)和鍵盤等外設(shè)更加輕松、快捷地操作計(jì)算機(jī)。在GUI界面中,計(jì)算機(jī)會(huì)呈現(xiàn)出各種

    2024年02月05日
    瀏覽(38)
  • 使用終極 GUI 框架 NiceGUI 提升你的 Python 應(yīng)用程序

    使用終極 GUI 框架 NiceGUI 提升你的 Python 應(yīng)用程序

    介紹 隨著機(jī)器學(xué)習(xí)和深度學(xué)習(xí)網(wǎng)站應(yīng)用程序的快速增長(zhǎng),開發(fā)人員一直在尋找新的 Web 框架,以便更輕松地構(gòu)建這些網(wǎng)站應(yīng)用程序。 數(shù)據(jù)科學(xué)應(yīng)用程序的普及程度已經(jīng)上升,因此新的框架也在增加。開發(fā)人員創(chuàng)建了許多新的框架,這些框架被證明對(duì)構(gòu)建這些網(wǎng)站應(yīng)用程序很有

    2024年02月12日
    瀏覽(19)
  • 100個(gè)Python實(shí)戰(zhàn)項(xiàng)目(十三)使用 Tkinter GUI 庫構(gòu)建鬧鐘應(yīng)用程序

    100個(gè)Python實(shí)戰(zhàn)項(xiàng)目(十三)使用 Tkinter GUI 庫構(gòu)建鬧鐘應(yīng)用程序

    本文主要是使用 Python 的 Tkinter 庫創(chuàng)建一個(gè)簡(jiǎn)單的鬧鐘程序,它可以在指定的時(shí)間播放一個(gè)聲音來提醒你。這個(gè)程序界面比較簡(jiǎn)單,只有一個(gè)標(biāo)簽、三個(gè)選項(xiàng)菜單和一個(gè)按鈕,用戶可以通過選項(xiàng)菜單設(shè)置鬧鐘的時(shí)間,然后點(diǎn)擊按鈕開始計(jì)時(shí),直到鬧鐘時(shí)間到達(dá)時(shí),程序會(huì)播放

    2023年04月16日
    瀏覽(20)
  • Python GUI之tkinter的皮膚(ttkbootstrap)打造出你的窗口之美

    Python GUI之tkinter的皮膚(ttkbootstrap)打造出你的窗口之美

    tkinter是python自帶的標(biāo)準(zhǔn)gui庫,對(duì)于我們自己日常做一些小程序出來給自己使用是非常不錯(cuò)的。因?yàn)閠kinter相比較其它強(qiáng)大的gui庫(PyQT,WxPython等等)而言要簡(jiǎn)單、方便、學(xué)起來也容易得很多,基本上兩三天就能學(xué)會(huì),所以非常是nice的。但是喃,它做出來的界面,如果你是沒有

    2024年02月02日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包