My Tkinter GUI Окно загружается как пустой экран - PullRequest
0 голосов
/ 04 августа 2020

По какой-то причине, когда я пытаюсь запустить свой код, окно GUI оказывается пустым. Консоль не показывает ошибок, а остальная часть программы работает без сбоев. Когда я запускал его отдельно, без другого кода, он работал отлично. Раньше у меня тоже был модуль «время», но потом я удалил его, поскольку некоторые говорили, что это может вызвать проблемы. Мы будем очень благодарны за любую помощь.

OS: Windows | Python Версия: 3.8.4

Используемые модули:

os
webbrowser
random    
requests
bs4 
arrow
wikipediaapi
re
urllib
io
speech_recognition
pyaudio
cv2
pickle
tkinter.scrolledtext 
PyQt5
tkinter
numpy
gtts
pyowm.owm
bs4
urllib.request
googletrans
console.utils
PIL
tzlocal
pygame

(я знаю, что много модулей)

GUI Код:

window = tk.Tk()
window.title("Ida")
window.configure(bg='black')
window.geometry("1500x800")

frame = tk.Frame(window)
frame.pack()

wid = 750
hei = 790

canvas = tk.Canvas(frame, bg="black", width = wid, height = hei)
canvas.config(highlightthickness=0)
canvas.pack()
logo = ImageTk.PhotoImage(file="Ida.png")
canvas.create_image(wid/2, hei/2, image=logo)
window.iconphoto(False, ImageTk.PhotoImage(file="Ida_icon.png"))

btn = tk.Button(window, text = 'The creator!', height = 2, width = 10,
                      bd = '5', bg="turquoise", 
                      command = lambda : webbrowser.open("www.gigablitzonline.wordpress.com"))

# Set the position of button on the top of window.    
btn.pack(side = 'left')
btn.place(x= 10, y= hei/2)


txt = scrolledtext.ScrolledText(frame, undo=True, wrap = tk.WORD)
txt['font'] = ('Calibri', '12')
txt.configure(height=6, bg = "black", fg = "white")
txt.pack(expand=True, fill='both')
txt.place(x = wid/2-250,y = 625, width = 500)
txt.configure(state = 'disabled')

input_box = scrolledtext.ScrolledText(frame, undo=True, wrap = tk.WORD)
input_box['font'] = ('Calibri', '12')
input_box.configure(height=3, bg = "black", fg = "white")
input_box.pack(expand=True, fill='both')
input_box.place(x = wid/2-250,y = 745, width = 500)
input_box.configure(state = 'disabled')

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Я думаю, вам следует завершить sh свой код с помощью window.mainloop() или вы можете просто использовать mainloop

  • добавить это в самую последнюю строку вашего скрипта.
0 голосов
/ 06 августа 2020

Я создал компактную рабочую версию из вашего GUI кода. Он не содержит серьезных дефектов, поэтому я предполагаю, что проблема на самом деле не в вашем разделе GUI.

Возможные проблемы:

  • Вы не У меня x.mainloop() конец файла. Или место неправильное.
  • Импорт неправильный.
  • Перед mainloop() стоит точка «разрыва / блокировки» (например: Long for l oop )

Но вы можете увидеть ниже мой тестовый код. Возможно, это поможет вам решить вашу проблему.

Код:

import tkinter as tk
import tkinter.scrolledtext as tkst
from PIL import ImageTk, Image

window = tk.Tk()
window.title("Ida")
window.configure(bg="black")
window.geometry("1500x800")

frame = tk.Frame(window)
frame.pack()

wid = 750
hei = 790

canvas = tk.Canvas(frame, bg="black", width=wid, height=hei)
canvas.config(highlightthickness=0)
canvas.pack()

load = Image.open("Ida.jpeg")  # Open the picture
my_image = load.resize((500, 300))  # Resize picture to 300x300
logo = ImageTk.PhotoImage(my_image)
canvas.create_image(wid / 2, hei / 2, image=logo)

btn = tk.Button(
    window,
    text="The creator!",
    height=2,
    width=10,
    bd="5",
    bg="turquoise",
    command=lambda: print("OK"),
)

# Set the position of button on the top of window.
btn.pack(side="left")
btn.place(x=10, y=hei / 2)


txt = tkst.ScrolledText(frame, undo=True, wrap=tk.WORD)
txt["font"] = ("Calibri", "12")
txt.configure(height=6, bg="black", fg="white")
txt.pack(expand=True, fill="both")
txt.place(x=wid / 2 - 250, y=625, width=500)
txt.configure(state="disabled")

input_box = tkst.ScrolledText(frame, undo=True, wrap=tk.WORD)
input_box["font"] = ("Calibri", "12")
input_box.configure(height=3, bg="black", fg="white")
input_box.pack(expand=True, fill="both")
input_box.place(x=wid / 2 - 250, y=745, width=500)
input_box.configure(state="disabled")

window.mainloop()

GUI:

GUI

Вывод в консоль:

Я изменил функцию обратного вызова в виджете Button на простую print("OK")

>>> python3 test.py 
OK
OK
OK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...