python GUI作業:tkinter控制元件改變背景色
要求
使用tkinter生成如下視窗:

圖片.png

圖片.png
在右上角文字框輸入名字,在旁邊的下拉框選擇數字,點選"Click Me!", "Click Me!"的文字將改變成如下:

圖片.png
可以選擇"Unchecked"和"Enabled"的其中一個。
點選Blue、Gold、Red其中的一個,將會改變背景為對應的顏色。
最下面的文字框可以輸入文字,當列數超出範圍時,可以通過滾動條操作。

圖片.png
參考資料
- 討論 釘釘群21745728 qq群144081101 567351477
- ofollow,noindex">本文最新版本地址
- 本文涉及的python測試開發庫 謝謝點贊!
- 本文相關海量書籍下載
- python工具書籍下載-持續更新
參考程式碼
#!/usr/bin/python3 # -*- coding: utf-8 -*- # 技術支援:https://www.jianshu.com/u/69f40328d4f0 # 技術支援 https://china-testing.github.io/ # https://github.com/china-testing/python-api-tesing/blob/master/practices/tk1.py # 討論釘釘免費群21745728 qq群144081101 567351477 # CreateDate: 2018-11-27 import tkinter as tk from tkinter import ttk from tkinter import scrolledtext win = tk.Tk() # Add a title win.title("Python GUI") # Modify adding a Label a_label = ttk.Label(win, text="A Label") a_label.grid(column=0, row=0) # Modified Button Click Function def click_me(): action.configure(text='Hello ' + name.get() + ' ' + number_chosen.get()) # Changing our Label ttk.Label(win, text="Enter a name:").grid(column=0, row=0) # Adding a Textbox Entry widget name = tk.StringVar() name_entered = ttk.Entry(win, width=12, textvariable=name) name_entered.grid(column=0, row=1) # Adding a Button action = ttk.Button(win, text="Click Me!", command=click_me) action.grid(column=2, row=1)# <= change column to 2 # Creating three checkbuttons ttk.Label(win, text="Choose a number:").grid(column=1, row=0) number = tk.StringVar() number_chosen = ttk.Combobox(win, width=12, textvariable=number, state='readonly') number_chosen['values'] = (1, 2, 4, 42, 100) number_chosen.grid(column=1, row=1) number_chosen.current(0) chVarDis = tk.IntVar() check1 = tk.Checkbutton(win, text="Disabled", variable=chVarDis, state='disabled') check1.select() check1.grid(column=0, row=4, sticky=tk.W) chVarUn = tk.IntVar() check2 = tk.Checkbutton(win, text="UnChecked", variable=chVarUn) check2.deselect() check2.grid(column=1, row=4, sticky=tk.W) chVarEn = tk.IntVar() check3 = tk.Checkbutton(win, text="Enabled", variable=chVarEn) check3.deselect() check3.grid(column=2, row=4, sticky=tk.W) # GUI Callback function def checkCallback(*ignoredArgs): # only enable one checkbutton if chVarUn.get(): check3.configure(state='disabled') else:check3.configure(state='normal') if chVarEn.get(): check2.configure(state='disabled') else:check2.configure(state='normal') # trace the state of the two checkbuttons chVarUn.trace('w', lambda unused0, unused1, unused2 : checkCallback()) chVarEn.trace('w', lambda unused0, unused1, unused2 : checkCallback()) # First, we change our Radiobutton global variables into a list colors = ["Blue", "Gold","Red"] # We have also changed the callback function to be zero-based, using the list # instead of module-level global variables # Radiobutton Callback def radCall(): radSel=radVar.get() ifradSel == 0: win.configure(background=colors[0])# now zero-based elif radSel == 1: win.configure(background=colors[1])# and using list elif radSel == 2: win.configure(background=colors[2]) # create three Radiobuttons using one variable radVar = tk.IntVar() # Next we are selecting a non-existing index value for radVar radVar.set(99) # Now we are creating all three Radiobutton widgets within one loop for col in range(3): curRad = tk.Radiobutton(win, text=colors[col], variable=radVar, value=col, command=radCall) curRad.grid(column=col, row=5, sticky=tk.W) # Using a scrolled Text control scrol_w= 30 scrol_h=3 scr = scrolledtext.ScrolledText(win, width=scrol_w, height=scrol_h, wrap=tk.WORD) scr.grid(column=0, columnspan=3) name_entered.focus()# Place cursor into name Entry #====================== # Start GUI #====================== win.mainloop()