繁体   English   中英

当字体不是一个单词时,更改画布中的字体样式给我一个错误python Tkinter

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM