[英]Changing font style in canvas is giving me a error when font is not one word python Tkinter
我有一个Toplevel()窗口,该窗口具有字体的列表框小部件,并且一旦用户单击列表中的项目,位于同一窗口中的画布小部件就会用字体重写其中的单词(嗨,您好吗?)用户选择的。 如果字体是一个单词,则可以正常工作。 但是,如果字体是(Comic Sans MS)这样的字体,那么它会出现空格:这是错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1486, in __call__
return self.func(*args)
File "C:\Users\Christian\Desktop\Basic Text - Copy.pyw", line 292, in changefont
canvas.create_text(150,20, fill="black", font=st + " 11 italic normal", text="Hi how are you?")
File "C:\Python27\lib\lib-tk\Tkinter.py", line 2294, in create_text
return self._create('text', args, kw)
File "C:\Python27\lib\lib-tk\Tkinter.py", line 2270, in _create
*(args + self._options(cnf, kw))))
TclError: expected integer but got "Sans"
这是代码:
def font(self):
font = "Arial"
style = "Regular"
fontwindow = Toplevel()
fontwindow.title("Font settings")
fontwindow.resizable(0,0)
fontfr5 = Frame(fontwindow,bd="2" ,padx=10,pady=10,width=300,height=60)
fontfr5.pack(side=LEFT)
label4= Label(fontfr5)
label4["text"]="Example: "
label4.pack(side=LEFT)
canvas = Canvas(fontfr5,bg="white",width=300,height=40)
canvas.pack(side=LEFT)
canvas.create_text(150,20, fill="black", font="Arial 11 normal", text="Hi how are you?")
def changefont(event): --Here is the function for the font change
canvas.delete(ALL)
selected = fontlist.get(fontlist.curselection())
st = "".join(selected)
findfont.delete(0,END)
findfont.insert(0,st)
canvas.create_text(150,20, fill="black", font=st + " 11 italic normal", text="Hi how are you?")
def changestyle(event):
selected = stylelist.get(stylelist.curselection())
style = selected
findstyle.delete(0,END)
findstyle.insert(0,selected)
fontlist.bind("<<ListboxSelect>>", changefont)
stylelist.bind("<<ListboxSelect>>", changestyle)
我已经使用“” .join(selected)将它连接成一个字符串,如果它不止一个单词,因为它在索引中。 但是,如何使它与一个以上的字体一起使用呢?
采用
font=('Comic Sans MS', 12, 'bold italic')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.