[英]ttk.Button state change sometimes not working
我一直在構建一個程序,並在嘗試更改ttk.Button()
的 state 時遇到了奇怪的響應。 到目前為止一切都很順利,但后來我遇到了一些問題,發現state
選項在創建ttk.Button()
時實際上不是一個選項。 我確實知道如何使用 Style() 等來更改它。 然而,當創建一個ttk.Entry()
object 時,它接受 state 作為選項並相應地設置它。 奇怪的反應是當您嘗試使用另一個按鈕更改 state 時。
這是一個代碼,其中state
已被定義為disabled
- 這表明該選項已被接受。 但是 function 不起作用。 至少對我來說。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def change_state():
if button1['state'] == 'disabled':
button1['state'] = 'normal'
elif button1['state'] == 'normal':
button1['state'] = 'disabled'
button1 = ttk.Button(root, state='disabled', text='test')
button1.pack()
button2 = ttk.Button(root, text='change state', command=change_state)
button2.pack()
root.mainloop()
在這里我做了一些隨機修改,並在 function 中添加了另一行。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def change_state():
print(button1['state'])
if button1['state'] == 'disabled':
button1['state'] = 'normal'
elif button1['state'] == 'normal':
button1['state'] = 'disabled'
button1 = ttk.Button(root, state='disabled', text='test')
button1.pack()
button2 = ttk.Button(root, text='change state', command=change_state)
button2.pack()
root.mainloop()
現在不知從何而來,這個 function 有效。 盡管首先什么都不應該起作用,因為state
不被接受為選項,因此不能以標准方式進行配置。 運行這兩個版本的任何其他人都有相同的響應。 誰能解釋發生了什么? 我認為這同樣適用於ttk.Entry()
以及可能的其他人。
button[state]
返回的值不是 python str
所以通過button1['state'] == 'disabled'
總是會是假的。 可以使用返回<class '_tkinter.Tcl_Obj'>
type(button1['state'])
進一步檢查。
def change_state():
if str(button1['state']) == 'disabled':
button1['state'] = 'normal'
elif str(button1['state']) == 'normal':
button1['state'] = 'disabled'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.