#python #tkinter #logic
#python #tkinter #Логические
Вопрос:
Итак, я хочу создать программу, в которой, когда я нажимаю кнопку, она должна создавать текстовое поле с переносом слов, но когда я снова нажимаю на кнопку, оно должно изменить или переключить его так, чтобы не было переноса слов.
Вот мой код на данный момент:
from tkinter import *
root = Tk()
root.geometry("600x600")
textBox = Text(root, width=500, height=500, wrap="none")
def doSomething():
textBox.configure(wrap="word")
# When I click it twice the wrap="none"
button = Button(root, text="Click Here", command=doSomething)
button.pack()
root.mainloop()
Поэтому, когда я нажимаю на кнопку, она должна изменить перенос на word, но когда я нажимаю на нее снова, она должна изменить перенос на none. Итак, как мне это сделать?
Ответ №1:
Просто измените свою функцию на:
def doSomething():
if textBox.cget("wrap") == "none":
textBox.configure(wrap="word")
elif textBox.cget("wrap") =="word":
textBox.configure(wrap="none")
Комментарии:
1. Спасибо, что действительно помогло это работает, есть ли способ добавить галочку при переносе слов.
2. Точно так же, как простая галочка, чтобы показать, что перенос слов включен. И когда для переноса слов установлено значение none, флажок должен исчезнуть.
3. Я думаю, вам придется использовать для этого изображения. Вы можете создать ярлык, содержащий изображение, и при нажатии кнопки вы можете разместить это изображение на экране с помощью grid(), а при повторном нажатии вы можете удалить его с помощью grid_forget()
Ответ №2:
Вы можете использовать a StringVar()
из tkinter.
#!/usr/bin/env python
from tkinter import *
root = Tk()
root.geometry("600x600")
var_button = StringVar()
var_button.set("word")
textBox = Text(root, width=500, height=500, wrap="none")
def doSomething():
if var_button.get() == "word":
var_button.set("none")
# When I click it twice the wrap="none"
else:
textBox.configure(wrap="word")
var_button.set("word")
print(f'textBox {var_button.get()}')
button = Button(root, text="Click Here", command=doSomething)
button.pack()