【发布时间】:2019-07-22 16:06:21
【问题描述】:
我收到一个未知选项 - alpha 错误。我不知道为什么。我正在尝试创建一个透明矩形,我需要设置 alpha 值来执行此操作。我想要它,这样当一个人按下透明矩形时,它就充当一个按钮。现在,只有矩形的轮廓作为按钮,我希望整个矩形的透明填充作为按钮。
class MainWindow(Tk):
def __init__(self, *args, **kwargs):
Tk.__init__(self, *args, **kwargs)
container = Frame(self, width = 165, height = 165)
container.grid(row = 0, columnspan = 4, rowspan =
50,sticky=N+S+W+E, padx=55, pady=40)
container.grid_rowconfigure(0, weight = 5)
container.grid_columnconfigure(0, weight = 5)
self.frames = {}
for F in (StartPage, PageOne):
frame = F(container, self)
self.frames[F] = frame
self.show_frame(StartPage)
def show_frame(self,cont):
frame = self.frames[cont]
frame.tkraise()
frame.grid(row = 0, column = 2, sticky = "nsew")
class StartPage(Frame,MainWindow):
def create_rectangle(x1, y1, x2, y2, **kwargs):
images = []
if 'alpha' in kwargs:
alpha = int(kwargs.pop('alpha') * 255)
fill = kwargs.pop('fill')
fill = root.winfo_rgb(fill) + (alpha,)
image = Image.new('RGBA', (x2-x1, y2-y1), fill)
images.append(ImageTk.PhotoImage(image))
self.canvas.create_image(x1, y1, image=images[-1],
anchor='nw')
self.canvas.create_rectangle(x1, y1, x2, y2, **kwargs)
def __init__(self,parent,controller):
frame = Frame.__init__(self, parent, width = 165, height = 165)
self.canvas = Canvas(self, width = 165, height = 165)
self.canvas.configure(highlightthickness=0, borderwidth=0)
self.canvas.grid(pady=(25,0)
self.filenamesBCRed = [img for img in glob.glob(pathBCred)]
self.filenamesBCRed_sorted =
natsort.natsorted(self.filenamesBCRed)
self.iter = 1 #iteration number
self.img_num = 0
self.count = 0
(x,y) = left_bottom_coordinates[self.box_index]
self.rect = create_rectangle(x,y, x+80,y+80, outline = 'red',
width = 1, fill ='gray', alpha = .5)
self.canvas.tag_bind(self.rect, '<Button-1>', self.onButton)
我收到一个未知选项 -alpha 错误。这是完整的错误信息:
Traceback (most recent call last):
File "Interactive3", line 302, in <module>
root = MainWindow()
File "Interactive3", line 31, in __init__
frame = F(container, self)
File "Interactive3", line 72, in __init__
self.canvas.create_rectangle(50, 50, 250, 150, fill='green', alpha=.5)
File "/anaconda3/lib/python3.6/tkinter/__init__.py", line 2498, in create_rectangle
return self._create('rectangle', args, kw)
File "/anaconda3/lib/python3.6/tkinter/__init__.py", line 2477, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: unknown option "-alpha"
【问题讨论】:
-
您已经定义了一个名为
create_rectangle()的函数,它采用alpha=关键字参数。然后你继续调用 Tkinter 自己的.create_rectangle()方法,以某种方式期望它也接受这个参数。 -
您发布的代码甚至无法编译,它无法引发
TclError。 -
@jasonharper 如何调用我创建的 create_rectangle() 函数?
-
这不是因为未定义的变量,而是因为缩进损坏。我还说“您发布的代码”。无论您运行的其他代码是否可以编译,我不知道,因为我看不到它。
-
始终将完整的错误消息(从单词“Traceback”开始)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。