我正在尝试从函数名loopCap
中的文本变量和图像中获取数据,并在__init__
函数中显示它,我在该函数中创建了一个画布,但由于下面提到的错误,我无法进一步移动
对于文本错误:
*(args + self._options(cnf, kw))))
_tkinter.TclError: unknown option "-textvariable"
对于图像错误:
self.put_photo = canvas.create_image(70, 250, image=self.photo, anchor='nw')
AttributeError: 'StartPage' object has no attribute 'photo'
实际代码示例:
import tkinter as tk
from tkinter import *
from tkinter.filedialog import asksaveasfile
from tkinter import messagebox
from PIL import ImageTk, Image
im = "BG.jpg"
class SampleApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self._frame = None
self.ard_stat = read_json(JSON_PATH)
self.switch_frame(StartPage)
def switch_frame(self, frame_class):
"""Destroys current frame and replaces it with a new one."""
new_frame = frame_class(self)
if self._frame is not None:
self._frame.destroy()
self._frame = new_frame
self._frame.pack()
class StartPage(tk.Frame):
def loopCap(self):
with open(JSON_PATH) as json_file1:
self.data = json.load(json_file1)
print(self.data)
if self.data['status'] == 'ACTIVE': # and (self.data['RH_img']!= 'null' or self.data['LH_img']!= 'null')
a = self.text.set(self.data['status'])
if self.data['RH_img'] == 'NA':
self.img = Image.open(Press)
self.img.load()
self.photo = ImageTk.PhotoImage(self.img)
self.label['image'] = self.photo
self.master.after(500, self.loopCap)
def __init__(self, master):
super().__init__(master)
self.master.config(bg='black')
Frame2 = tk.Frame(self.master)
Frame2.pack(fill='both',expand = True)
self.photo_back = ImageTk.PhotoImage(im)
lab_1 = tk.Label(Frame2, image=self.photo_back)
lab_1.image = self.photo_back
lab_1.place(x=0, y=0, relwidth=1, relheight=1)
canvas = Canvas(Frame2, width=1000, height=700)
canvas.place(x=0, y=0, relwidth=1, relheight=1)
canvas.create_image(0, 0, image=self.photo_back, anchor='nw')
self.text = tk.StringVar()
canvas.create_text(230, 170, fill="white", font="Times 20 bold",
textvariable=self.text, anchor="w")
self.label = tk.Label(canvas)
self.put_photo = canvas.create_image(70, 250, image=self.photo, anchor='nw')
canvas.itemconfig(self.put_photo, image=self.photo)
self.master.after(500, self.loopCap)
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
任何建议都会大有帮助
尝试将“textvariable=”替换为“text=”
相关问题 更多 >
编程相关推荐