Tkinter的下拉列表Combobox


Tkinter的下拉列表Combobox

tk中下拉列表使用ttk.Combobox,代碼如下:
  1.  
    #!/usr/bin/env python
  2.  
    # -*- coding: utf-8 -*-
  3.  
     
  4.  
     
  5.  
    import tkinter as tk
  6.  
    from tkinter import ttk
  7.  
     
  8.  
    win = tk.Tk()
  9.  
    win.title("Python GUI") # 添加標題
  10.  
     
  11.  
    ttk.Label(win, text="Chooes a number").grid(column=1, row=0) # 添加一個標簽,並將其列設置為1,行設置為0
  12.  
    ttk.Label(win, text="Enter a name:").grid(column=0, row=0) # 設置其在界面中出現的位置 column代表列 row 代表行
  13.  
     
  14.  
    # button被點擊之后會被執行
  15.  
    def clickMe(): # 當acction被點擊時,該函數則生效
  16.  
    action.configure(text='Hello ' + name.get()) # 設置button顯示的內容
  17.  
    action.configure(state='disabled') # 將按鈕設置為灰色狀態,不可使用狀態
  18.  
     
  19.  
    # 按鈕
  20.  
    action = ttk.Button(win, text="Click Me!", command=clickMe) # 創建一個按鈕, text:顯示按鈕上面顯示的文字, command:當這個按鈕被點擊之后會調用command函數
  21.  
    action.grid(column=2, row=1) # 設置其在界面中出現的位置 column代表列 row 代表行
  22.  
     
  23.  
    # 文本框
  24.  
    name = tk.StringVar() # StringVar是Tk庫內部定義的字符串變量類型,在這里用於管理部件上面的字符;不過一般用在按鈕button上。改變StringVar,按鈕上的文字也隨之改變。
  25.  
    nameEntered = ttk.Entry(win, width=12, textvariable=name) # 創建一個文本框,定義長度為12個字符長度,並且將文本框中的內容綁定到上一句定義的name變量上,方便clickMe調用
  26.  
    nameEntered.grid(column=0, row=1) # 設置其在界面中出現的位置 column代表列 row 代表行
  27.  
    nameEntered.focus() # 當程序運行時,光標默認會出現在該文本框中
  28.  
     
  29.  
    # 創建一個下拉列表
  30.  
    number = tk.StringVar()
  31.  
    numberChosen = ttk.Combobox(win, width=12, textvariable=number)
  32.  
    numberChosen['values'] = (1, 2, 4, 42, 100) # 設置下拉列表的值
  33.  
    numberChosen.grid(column=1, row=1) # 設置其在界面中出現的位置 column代表列 row 代表行
  34.  
    numberChosen.current(0) # 設置下拉列表默認顯示的值,0為 numberChosen['values'] 的下標值
  35.  
     
  36.  
    win.mainloop() # 當調用mainloop()時,窗口才會顯示出來
執行代碼結果如圖:

52490873.png
注:
- 程序執行下拉框中默認顯示的值由下面代碼實現
nameEntered.focus() # 當程序運行時,光標默認會出現在該文本框中
- 在這里下拉框中還可以直接輸入一個值,如果不希望這個地方可以輸入值,可以在創建的時候添加一個參數:
  1.  
    state='readonly' # 將下拉列表設置成為只讀模式
  2.  
     
  3.  
    # 完整代碼如下:
  4.  
    numberChosen = ttk.Combobox(win, width=12, textvariable=number, state='readonly')
修改代碼,需求是當點擊button按鈕時,button上面顯示的字符串是文本框和下拉列表顯示的字符串的拼接,只需要修改一下clickMe函數就可以了,代碼如下:
  1.  
    def clickMe(): # 當acction被點擊時,該函數則生效
  2.  
    action.configure(text='Hello ' + name.get() + ' ' + numberChosen.get()) # 設置button顯示的內容
代碼執行結果如圖:

54272903.png


文/congzhang(簡書作者)
原文鏈接:http://www.jianshu.com/p/2a931ce70b4b


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM