Python tkinter 學習記錄(一) --label 與 button

来源:https://www.cnblogs.com/ansver/archive/2019/03/05/10479707.html
-Advertisement-
Play Games

最簡的形式 運行結果 label標簽的使用 結果 說明, 組件創建後並不會立刻出現在視窗上,還需要pack一下才會出現 排列順序取決去 pack的順序 而非創建的順序 使用help函數 瞭解到 label還有很多屬性 help(Label)的結果太多所以改成 help(Label.__init__) ...


最簡的形式

from tkinter import *

root = Tk()
# 創建一個Tk實例
root.wm_title("標題")
# 修改標題
root.mainloop()
# 進入root的事件迴圈

運行結果

label標簽的使用

from tkinter import *

root = Tk()
root.wm_title("標題")
w1 = Label(root, text="~~~~~~1號標簽~~~~~~")
w2 = Label(root, text="~~~~~~2號標簽~~~~~~")
w3 = Label(root, text="~~~~~~3號標簽~~~~~~")
w4 = Label(root, text="~~~~~~4號標簽~~~~~~")

w1.pack()

w4.pack()
w3.pack()


root.mainloop()

結果

說明,  組件創建後並不會立刻出現在視窗上,還需要pack一下才會出現

排列順序取決去 pack的順序 而非創建的順序

 

使用help函數 瞭解到 label還有很多屬性

>>> from tkinter import *
>>> help(Label.__init__) Help on function __init__ in module tkinter: __init__(self, master=None, cnf={}, **kw) Construct a label widget with the parent MASTER. STANDARD OPTIONS activebackground, activeforeground, anchor, background, bitmap, borderwidth, cursor, disabledforeground, font, foreground, highlightbackground, highlightcolor, highlightthickness, image, justify, padx, pady, relief, takefocus, text, textvariable, underline, wraplength WIDGET-SPECIFIC OPTIONS height, state, width

help(Label)的結果太多所以改成 help(Label.__init__)

 

 Button 按鈕

它可以綁定一個函數/方法/可調用的對象,    在按鈕被點擊時,會調用與之綁定的東西

兩種綁定方法

一,在定義時 標註command 屬性

from tkinter import *


def add_label():
    global root
    w = Label(text="一個新增的標簽")
    w.pack()


root = Tk()
root.wm_title("one window")

b1 = Button(root, text="一個按鈕", command=add_label)
b1.pack()

root.mainloop()

點了按鈕幾次之後

需要註意的是

command=add_label     command屬性 將是一個function對象
command=add_label()   command值為None 因為add_label沒定義返回值
command="add_label"    command 是str對象

第二種方法 使用bind方法

from tkinter import *


def add_label(event):
    global root
    w = Label(text="一個新增的標簽"+str(event))
    w.pack()


root = Tk()
root.wm_title("one window")

b1 = Button(root, text="一個按鈕")
b1.bind("<Button-1>", add_label)
b1.pack()

root.mainloop()

結果(點擊了幾次之後的)

 xx.bind(事件描述,對應函數名)

對應函數定義時,必須加一個參數,,因為事件的詳細信息會作為參數被"塞給"事件對應的函數  ,事件的詳細信息一般大牛們才用的到,新手可以無視事件的內容   ,但是必須在函數定義處加一個參數 以避免TypeError

TypeError: add_label() takes 0 positional arguments but 1 was given

這個函數需要0個參數, 但是調用時 被給了 1 個參數          參數數目不對 python 難以處理 所以報錯

對應函數名處一定要註意 是函數名 不要加引號 也不要加括弧 原因上面已解釋

 

 #end

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1:下載 ElasticSearch 鏡像 2:創建 ElasticSearch 容器: 啟動成功後在瀏覽器地址欄輸入:http://宿主機ip:9200 出現如下,表示啟動成功 3:但是如果 Java 使用 9300 埠連接ES 會出現如下錯誤 4:修改docker容器中的配置文件: 進入 co ...
  • 1. 首先新建文件夾media 後 在項目setting中具體配置: 在 setting 中的 TEMPLATES 下的 OPTIONS 中的 context_processors 中追加: TEMPLATES = [ { 'DIRS': [os.path.join(BASE_DIR, 'templ ...
  • python中根據字元串導入模塊module 需要導入importlib,使用其中的import_module方法 import importlib modname = 'datetime' datetime_module = importlib.import_module(modname) pri ...
  • 一、Redis Cluster集群簡介 Redis Cluster是Redis官方提供的分散式解決方案,在3.0版本後推出的,有效地解決了Redis分散式的需求,當一個節點掛了可以快速的切換到另一個節點,當遇到單機記憶體、併發等瓶頸時,可以採用分散式方案要解決問題。 二、集群原理 Redis Clus ...
  • 1.final、finally、finally final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變數或方法聲明為final,可以保證它們在使用中不被改變。被聲明為fin ...
  • 問題:對於integer對象,當比較2=2的時候,返回的值是true還是false?當比較2000=2000的時候,返回的值是true還是false? 回答:當比較2=2的時候,返回的值是true;當比較2000=2000的時候,返回的值是false。 理由:equal比較是兩個值的大小是否能夠相等 ...
  • 過程解析: 1.首先執行int[] arr={3,5,6,1,7,9,0},遇到數組先執行等式右邊的,{3,5,6,1,7,9,0}會在堆記憶體中開闢一塊空間,分成7小塊,下標分別從0~6,先進行系統初始化,系統預設初始值均為0,然後將程式初始值3,5,6,1,7,9,0分別賦值給7塊小空間,在堆記憶體 ...
  • 作者: 石杉的架構筆記 1、再回顧:什麼是服務註冊中心? 先回顧一下什麼叫做服務註冊中心? 顧名思義,假設你有一個分散式系統,裡面包含了多個服務,部署在不同的機器上,然後這些不同機器上的服務之間要互相調用。 舉個現實點的例子吧,比如電商系統里的訂單服務需要調用庫存服務,如下圖所示。 現在的問題在於, ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...