wenyiyimo 2021-07-15 09:48 采纳率: 100%
浏览 33
已采纳

kivy打包遇到TypeError

在kivy2.0打包exe时遇到下列问题:

img

以下是代码,打包用的 pyinstaller -F 文件名 求帮助。

from kivy.app import App
from kivy.core import window
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from kivy.core.window import Window

Window.size = 500, 700
Builder.load_string("""
<MyLayout>:
    BoxLayout:
        orientation: 'vertical'
        size:root.width,root.height
        TextInput:
            id:calc_input
            text:"0"
            font_name:"./SIMLI.TTF"
            halign:"right"
            font_size: 65
            size_hint: 1, .15
        GridLayout:
            cols:4
            rows:5
            Button:
                size_hint: .2, .2
                font_size:32
                text:"%"
                font_name:"./SIMLI.TTF"
            Button:
                size_hint: .2, .2
                font_size:32
                text:"C"
                font_name:"./SIMLI.TTF"
                on_press:root.clear()
            Button:
                id:clear
                size_hint: .2, .2
                font_size:32
                text:"<<"
                font_name:"./SIMLI.TTF"
                on_press:root.remove()
            Button:
                size_hint: .2, .2
                font_size:32
                text:"/"
                font_name:"./SIMLI.TTF"
                on_press:root.math_sign("/")
            Button:
                size_hint: .2, .2
                font_size:32
                text:"7"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(7)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"8"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(8)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"9"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(9)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"x"
                font_name:"./SIMLI.TTF"
                on_press:root.math_sign("*")
            Button:
                size_hint: .2, .2
                font_size:32
                text:"4"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(4)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"5"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(5)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"6"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(6)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"-"
                font_name:"./SIMLI.TTF"
                on_press:root.math_sign("-")
            Button:
                size_hint: .2, .2
                font_size:32
                text:"1"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(1)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"2"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(2)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"3"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(3)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"+"
                font_name:"./SIMLI.TTF"
                on_press:root.math_sign("+")
            Button:
                size_hint: .2, .2
                font_size:32
                text:"+/-"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.pos_neg()
            Button:
                size_hint: .2, .2
                font_size:32
                text:"0"
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.button_press(0)
            Button:
                size_hint: .2, .2
                font_size:32
                text:"."
                font_name:"./SIMLI.TTF"
                background_color:157/255, 157/255, 157/255,1
                on_press:root.dot()
            Button:
                size_hint: .2, .2
                font_size:32
                text:"="
                font_name:"./SIMLI.TTF"
                on_press:root.equals()         
                    
                    
                    """)

class MyLayout(Widget):
    def clear(self):
        self.ids.calc_input.text = '0'

    def button_press(self, button):
        prior = self.ids.calc_input.text
        if "Error" in prior:
            prior = ''
        if prior == "0":
            self.ids.calc_input.text = ''
            self.ids.calc_input.text = f'{button}'
        else:
            self.ids.calc_input.text = f'{prior}{button}'

    def remove(self):
        prior = self.ids.calc_input.text
        prior = prior[:-1]
        self.ids.calc_input.text = prior

    def dot(self):
        prior = self.ids.calc_input.text
        num_list = prior.split("+")
        if "+" in prior and "." not in num_list[-1]:
            prior = f'{prior}.'
            self.ids.calc_input.text = prior
        elif "." in prior:
            pass
        else:
            prior = f'{prior}.'
            self.ids.calc_input.text = prior

    def math_sign(self, sign):
        prior = self.ids.calc_input.text
        self.ids.calc_input.text = f'{prior}{sign}'

    def equals(self):
        prior = self.ids.calc_input.text
        try:
            answer = eval(prior)
            self.ids.calc_input.text = str(answer)
        except:
            self.ids.calc_input.text = 'Error'
        """if "+" in prior:
            num_list = prior.split("+")
            answer = 0
            for number in num_list:
                answer = answer+float(number)
            self.ids.calc_input.text = str(answer)"""

    def pos_neg(self):
        prior = self.ids.calc_input.text
        if "-" in prior:
            self.ids.calc_input.text = f'{prior.replace("-", "")}'
        else:
            self.ids.calc_input.text = f'-{prior}'


class CalculatorApp(App):
    def build(self):
        return MyLayout()


if __name__ == '__main__':
    CalculatorApp().run()

  • 写回答

2条回答 默认 最新

  • CSDN专家-黄老师 2021-07-15 09:50
    关注

    先用最简单的代码打包看看是不是电脑环境问题,然后再从代码问题入手

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月15日
  • 创建了问题 7月15日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助