我想對我的 GUI 中的所有按鈕只使用一個功能(self.toggle),而不是為每個按鈕做一個。我試圖只更改沒有數字的 self.button 的名稱,然后我只在一個按鈕上更改了文本,而不是所需的按鈕。有沒有簡單的方法來做一個功能?我只是從 Python 開始。提前致謝。
from tkinter import *
from tkinter.ttk import Button
class Application(Tk):
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
self.create_widgets()
self.number = [1, 2, 3]
self.mainloop()
def toggle1(self, number):
if self.button1.config('text')[-1] == f"{number}: ON":
self.button1.config(text=f"{number}: OFF")
print("OFF")
else:
self.button1.config(text=f"{number}: ON")
print("ON")
def toggle2(self, number):
if self.button2.config('text')[-1] == f"{number}: ON":
self.button2.config(text=f"{number}: OFF")
print("OFF")
else:
self.button2.config(text=f"{number}: ON")
print("ON")
def toggle3(self, number):
if self.button3.config('text')[-1] == f"{number}: ON":
self.button3.config(text=f"{number}: OFF")
print("OFF")
else:
self.button3.config(text=f"{number}: ON")
print("ON")
def create_widgets(self):
self.title("application")
width = 200
height = 250
screen_width = self.winfo_screenwidth()
screen_height = self.winfo_screenheight()
x = (screen_width/2) - (width/2)
y = (screen_height/2) - (height/2)
self.geometry("%dx%d %d %d" % (width, height, x, y))
self.button1 = Button(self, text = "1: OFF", command=lambda: self.toggle1(1))
self.button1.grid(
row=3, column=0, sticky="w", columnspan=1, padx=0, pady=10)
self.button2 = Button(self, text = "2: OFF", command=lambda: self.toggle2(2))
self.button2.grid(
row=5, column=0, sticky="w", columnspan=1, padx=0, pady=10)
self.button3 = Button(self, text = "3: OFF", command=lambda: self.toggle3(3))
self.button3.grid(
row=7, column=0, sticky="w", columnspan=1, padx=0, pady=10)
if __name__ == "__main__":
Application()
uj5u.com熱心網友回復:
您可以將按鈕小部件傳遞給toggle()
如下:
...
class Application(Tk):
...
def toggle(self, button):
number, state = button['text'].split(': ')
state = 'ON' if state == 'OFF' else 'OFF'
button['text'] = f'{number}: {state}'
print(number, state)
def create_widgets(self):
...
self.button1 = Button(self, text="1: OFF", command=lambda: self.toggle(self.button1))
...
self.button2 = Button(self, text="2: OFF", command=lambda: self.toggle(self.button2))
...
self.button3 = Button(self, text="3: OFF", command=lambda: self.toggle(self.button3))
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/497232.html
上一篇:如何添加串列框?