簡體   English   中英

ttk.Button state 更改有時不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM