請問您可以請我帶一個解決方案,我無法解決這個問題。AttributeError:'主畫面'對象沒有屬性'屬性'
我得到一個AttributeError:'主畫面'對象沒有屬性'屬性' 當我按下按鈕切換到全屏。 THX的幫助
#!/bin/python3
import tkinter
import grovepi
import math
import time
from tkinter import Tk, Label, Button
class mainscreen:
def __init__(self,master):
self.master = master
master.title ("Temperature")
master.geometry("800x480")
master.attributes("-fullscreen", False)
self.state = False
sensorTH1 = 4
sensorTH2 = 3
temp1=0
temp2=0
#column0 and 1
self.labeltemp11 = tkinter.Label (master, text="Temp inside", fg="black", font="72")
self.labeltemp11.grid(row=1, column=0 ,sticky="sw")
self.labeltemp1 =tkinter.Label (master, text="", fg="black", font="72")
self.labeltemp1.grid(row=1, column=1,sticky="sw")
self.labelhum11 = tkinter.Label(master, text="Hum inside", fg="black", font="72")
self.labelhum11.grid(row=2,column=0,sticky="sw")
self.labelhum1 = tkinter.Label (master, text="",fg="black", font="72")
self.labelhum1.grid(row=2, column=1,sticky="sw")
self.labeltemp22 = tkinter.Label (master, text="Temp outside", fg="black",font="72")
self.labeltemp22.grid(row=3, column=0,sticky="sw")
self.labeltemp2 = tkinter.Label (master, text="", fg="black", font="72")
self.labeltemp2.grid(row=3, column=1,sticky="sw")
self.labelhum22 = tkinter.Label(master, text="Hum outside", fg="black", font="72")
self.labelhum22.grid(row=4,column=0,sticky="sw")
self.labelhum2 = tkinter.Label (master, text="", fg="black", font="72")
self.labelhum2.grid(row=4, column=1,sticky="sw")
#win.focus_set()
#win.bind("t",toggle_fullscreen(win))
self.button= tkinter.Button(master, text="No fullscreen", width=10,command=lambda:self.toggle_fullscreen())
#works as well button= tkinter.Button(win, text="No Fullscreen", width=10,command=toggle_fullscreen)
self.button.grid(column=0,row=5,sticky="nsew")
#column2 empty
self.labelemp1 = tkinter.Label (master, text="", fg="black", width="10" ,bg="white" , font="72")
self.labelemp1.grid(row=0, column=2,sticky="sw")
self.labelemp2 = tkinter.Label (master, text="test", fg="black", width="10",bg="black" , font="72")
self.labelemp2.grid(row=0, column=3,sticky="sw")
def READ(toggle):
if toggle:
[temp1,humidity1] = grovepi.dht(sensorTH1,1)
self.labeltemp1.configure(text= "{value:6.2f} C".format(value=temp1))
self.labelhum1.configure(text= "{value:6.2f} %".format(value=humidity1))
print ("temp1 =", temp1, " humidity1 =", humidity1) #py3
else:
#time.sleep(1)
[temp2,humidity2] = grovepi.dht(sensorTH2,1)
self.labeltemp2.configure(text= "{value:6.2f} C".format(value=temp2))
self.labelhum2.configure(text= "{value:6.2f} %".format(value=humidity2))
print ("temp2 =", temp2, " humidity2 =", humidity2) #py3
toggle= not toggle
#print (toggle)
return(toggle)
def read_every_second(self):
#global readoneortwo not needed after object oriented programming
#win.attributes("-fullscreen", False)
#toggle_fullscreen(win)
readoneortwo=self.READ(readoneortwo)
master.after(1000, read_every_second)
# can be used with call of button lamda: toggle_fullscreen (win) or any other window?
#def toggle_fullscreen(self, event=None):
# self.state = not self.state # Just toggling the boolean
# print ("test")
# self.attributes("-fullscreen", self.state)
# return "break"
def toggle_fullscreen(self, event=None):
self.state = not self.state # Just toggling the boolean
if self.state:
self.button["text"]="No Fullscreen"
else:
self.button["text"]="Fullscreen"
self.attributes("-fullscreen", master.state)
return "break"
if __name__ == '__main__':
root = tkinter.Tk()
win = mainscreen(root)
#win.read_every_second()
root.mainloop()
如果我想運行win.read_every_second()我得到一個錯誤:
UnboundLocalError:局部變量 'readoneortwo' 分配之前引用
我被告知使用面向對象和類,所以我不需要全局變量,但似乎我做?
在頂部,設置'master.attributes( 「 - 全屏」,假)',但在底部使用'self':'self.attributes(」 -fullscreen「,master.state)'。 – Evert
很坦白地說,我不明白,因爲我是新的....我以爲self.master =主.. – Fredddd