Использование модуля Tkinter в python и модуля цвета фона не работает

#python #tkinter

#python #tkinter

Вопрос:

 import pyautogui, time
import tkinter as tk

root = tk.Tk()

root.configure(background='cyan')

root.title("SycoBak's SpamBot")

canvas1 = tk.Canvas(root, width = 400, height = 300)
canvas1.pack()

entry1 = tk.Entry (root) 
canvas1.create_window(200, 140, window=entry1)

label1 = tk.Label(root, text='Spam Bot')
label1.config(font=('helvetica', 14))
canvas1.create_window(200, 25, window=label1)

label2 = tk.Label(root, text='Word')
label2.config(font=('helvetica', 10))
canvas1.create_window(200, 120, window=label2)

label3 = tk.Label(root, text='Amount')
label3.config(font=('helvetica', 10))
canvas1.create_window(200, 160, window=label3)

entry2 = tk.Entry (root) 
canvas1.create_window(200, 180, window=entry2)

def Spammer ():
  time.sleep(5)
  x = 0
  amount = int(entry2.get())
  word = entry1.get()
  while (amount > x):
    pyautogui.typewrite(word)
    pyautogui.press("enter")
    x=x 1

button2 = tk.Button(text='Start', command=Spammer)
canvas1.create_window(200, 220, window=button2)

root.mainloop()
  

Вот мой код, я понятия не имею, почему цвет фона не меняется. Я хотел бы, чтобы кто-нибудь помог мне отладить эту проблему, поскольку я не получаю никаких ошибок в своей консоли.

Комментарии:

1. Вы имеете в виду, что он никогда не становится голубым?

Ответ №1:

Единственная проблема, которую я вижу, это то, что ваш холст занимает пространство окна, и, следовательно, цвет не виден. Как мне это доказать? Просто увеличьте размер окна, и вы увидите голубой цвет.

Поэтому не используйте canvas для отображения виджетов на экране, вместо этого используйте менеджеры компоновки, такие как, pack() , grid() или place() . Вот упрощенный пример вашего основного кода с pack() холстом и без него:

 import tkinter as tk

root = tk.Tk()
root.configure(background='cyan')
root.title("SycoBak's SpamBot")

entry1 = tk.Entry (root) 
entry1.pack()

label1 = tk.Label(root, text='Spam Bot')
label1.config(font=('helvetica', 14))
label1.pack()

label2 = tk.Label(root, text='Word') 
label2.config(font=('helvetica', 10))
label2.pack()

label3 = tk.Label(root, text='Amount')
label3.config(font=('helvetica', 10))
label3.pack()

entry2 = tk.Entry (root) 
entry2.pack()

button2 = tk.Button(text='Start') #i removed the function here as no changes require there
button2.pack()

root.mainloop()
  

Обратите внимание, что серый фон, который вы видите для метки, является фоном виджета, вы также можете установить его на голубой, например:

 label1 = tk.Label(root, text='Spam Bot',bg='cyan') #do same for others too