Почему возникает проблема при отображении изображения из разных GUI в другом модуле путем вызова функции из другого модуля? - PullRequest
0 голосов
/ 03 февраля 2020

Я попытался создать модуль, в котором я сделал функцию, которая просто читает и отображает изображение в GUI. Затем я сделал еще один модуль, который вызывает эту функцию при нажатии кнопки. Кнопка дает мне ошибку.

#module code:
from tkinter import *
class disp:
    def __init__(self):
        root1.geometry("400x500")
        image = PhotoImage(file = 'png2.png')
        Label(root1,image=image).pack()
        root1.mainloop()


#main code:
from tkinter import *
import testimg as ti

def click():
    ti.disp()

root = Tk()

Button(text = 'Click me',command=click).pack()
root.mainloop()

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Ниже модифицированный код основан на вашем:

#module code:
from tkinter import *

class disp:
    def __init__(self):
        root1 = Tk()
        root1.geometry("400x500")
        image = PhotoImage(master=root1, file='png2.png') # set master to root1
        Label(root1, image=image).pack()
        root1.mainloop()

Но использование нескольких экземпляров Tk() не очень хороший дизайн.

0 голосов
/ 03 февраля 2020

В вашем классе disp вы указали мастер как root1, тогда как в основном коде вы определили Tk () как root. Это означает, что root1 не является окном, поэтому у метки, у которой есть мастер root1, нет места для упаковки.

Вам также необходимо удалить root1.mainl oop (), потому что это бесполезно и вызывает ошибки из-за того, что root1 не имеет Tk (). Это все равно, что пытаться l oop оператор while без ввода while. Это дает ошибку.

...