日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python高级语法-GUI编程(主要介绍tkinter)

發(fā)布時(shí)間:2024/4/11 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python高级语法-GUI编程(主要介绍tkinter) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 首先,這里必須強(qiáng)調(diào),盡管python的創(chuàng)始人提到過python沒有主打領(lǐng)域,后來者可以無限豐富它,但是時(shí)至今日, python語言已經(jīng)找到了自己的路,但這些路里面絕對沒有GUI開發(fā)。所以這里只做粗淺的介紹,而且Tkinter也不是python中常用的GUI,因?yàn)榇_實(shí)不好看。
    • Tkinter:綁定TK GUI工具集,用python包裝的tcl代碼,?輕量級,但是很丑
    • PyGTK:Tkinter的代替品
    • wxPython:跨平臺GUI
    • PyQT:跨平臺,商業(yè)授權(quán)有問題,個(gè)人開發(fā)可能有版權(quán)問題,但好用

?

  • Tkinter幾類組件:

布局方式:

? ? ? ? ? ? ? ? ? ? ? ?pack:方位布局

? ? ? ? ? ? ? ? ? ? ? ?place:坐標(biāo)布局

? ? ? ? ? ? ? ? ? ? ? ?gird:網(wǎng)格布局

相關(guān)設(shè)置請看源碼,常用的都會測試到。

? 按鈕:

? ? ? ? ? ? ? ? ? ? ? ?Button

? ? ? ? ? ? ? ? ? ? ? ?RadioButton

?? ? ? ? ? ? ? ? ? ? ? CheckButton

? ? ? ? ? ? ? ? ? ? ? ?Listbox

? 文本輸入組件:

? ? ? ? ? ? ? ? ? ? ? ?Entry:單行

? ? ? ? ? ? ? ? ? ? ? ?Text:多行

? 標(biāo)簽:

? ? ? ? ? ? ? ? ? ? ? ?label:顯示圖片和文字

? ? ? ? ? ? ? ? ? ? ? ?Message:根據(jù)內(nèi)容文字換行

? 菜單:

? ? ? ? ? ? ? ? ? ? ? ?Menu

? ? ? ? ? ? ? ? ? ? ? ?MenuButton

? 滾動條:

? ? ? ? ? ? ? ? ? ? ? ?scale:滑塊組件

? ? ? ? ? ? ? ? ? ? ? ?Scrollbar滾動條組件

? 其他組件:

? ? ? ? ? ? ? ? ? ? ? ?Canvas:畫布組件

? ? ? ? ? ? ? ? ? ? ? ?Frame:框架組件,將多個(gè)組件分組

? ? ? ? ? ? ? ? ? ? ? ?Toplevel:創(chuàng)建子窗口容器組件

  • 啟動消息循環(huán)在所有組件設(shè)置的最后

?

  • test1
import tkinter # 類似java Frame的頂層容器 base = tkinter.Tk() base.wm_title("test") # label測試 lb1 = tkinter.Label(base, text="這是label1") # 布局設(shè)置,pack是一種自適應(yīng)布局 lb1.pack() lb2 = tkinter.Label(base, text="這是label2") lb2.pack()# entry測試 et1 = tkinter.Entry(base) et1.pack() et2 = tkinter.Entry(base) et2.pack() et2["show"] = "*" # button測試 def cmd1():base.wm_title("你按下了按鈕,我得到你的輸入為{}".format(et1.get()))btn = tkinter.Button(base, text="我是按鈕,戳我", command=cmd1) btn.pack()# 消息循環(huán),放在組件設(shè)置的最后 base.mainloop()

?

  • test2
import tkinter # 級聯(lián)菜單測試 baseFrame = tkinter.Tk() menubar = tkinter.Menu(baseFrame) baseFrame["menu"] = menubar menubar2 = tkinter.Menu(menubar) l = ["選項(xiàng)1-1", "選項(xiàng)1-2", "選項(xiàng)1-3"] for i in l:menubar2.add_command(label=i) menubar.add_cascade(label="選項(xiàng)1", menu=menubar2) menubar.add_command(label="選項(xiàng)2") baseFrame.mainloop()

  • test3
import tkinter def makeLabel():global baseFrametkinter.Label(baseFrame, text="點(diǎn)了你點(diǎn)了").pack() # 彈出菜單 baseFrame = tkinter.Tk() menubar = tkinter.Menu(baseFrame) for i in ["選項(xiàng)1", "選項(xiàng)2", "選項(xiàng)3"]:menubar.add_separator()menubar.add_command(label=i) menubar.add_command(label="你牛逼你點(diǎn)我啊", command=makeLabel) def pop(event):# 監(jiān)聽位置menubar.post(event.x_root, event.y_root) baseFrame.bind("<Button-3>", pop) baseFrame.mainloop()

  • test4
import tkinter baseFrame = tkinter.Tk() cvs = tkinter.Canvas(baseFrame, width =300, height = 200) cvs.pack() cvs.create_line(1,1,100,200) baseFrame.mainloop()

  • ?其他更多設(shè)置可在pycharm下按住ctrl選中名稱獲得源碼查看屬性。
  • 由以上測試可知GUI組件使用套路一致:
    • ? ?創(chuàng)建窗口,頂級容器
    • ? ?創(chuàng)建各個(gè)類型組件,指明父親位置,觸發(fā)事件,設(shè)置布局
    • ? ?為主窗口設(shè)置消息循環(huán)

?

超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的python高级语法-GUI编程(主要介绍tkinter)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。