我儘量讓一個應用程序,從用戶需要值,並把它們放在一個MySQL數據庫,但是當我點擊按鈕,它給我的錯誤kivy floatlayoutApp.x格式無效
floatlayoutApp.x has an invalid format (got <__main__.video object at 0x0000000007371BE0>)
我不知道這裏有什麼問題,所以我沒有嘗試過別的 這裏是我的代碼
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String
import sqlalchemy
from kivy.config import Config
Config.set('kivy', 'keyboard_mode', 'systemandmulti')
eng = create_engine('mysql://root:[email protected]:3306/mydb')
Session=sessionmaker(bind = eng)
session = Session()
base=declarative_base()
class video(base):
__tablename__= 'videos_test'
video_id=Column(Integer,primary_key=True)
video_name=Column(String(100),index=True)
video_url=Column(String(255))
base.metadata.create_all(eng)
class floatlayoutApp(FloatLayout):
name=""
url=""
def create_instance(self,name,url):
try:
self.x=video(video_name=self.name,video_url=self.url)
session.add(self.x)
session.commit()
except ValueError as err:
print (err)
class YCEApp(App):
def build(self):
return floatlayoutApp()
YCE=YCEApp()
YCE.run()
和這就是我的kv.file代碼
<[email protected]>:
font_size: 32
<FloatLayout>:
id: YCE
display: entry
padding: 10
spacing: 10
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: "image1.jpg"
BoxLayout:
TextInput:
id: entry
font_size: 32
multiline: False
size_hint: .45, .2
CustButton:
size_hint: .45,.2
text:"enter video name"
background_color:1,1,1,1
on_press: root.name = entry.text
CustButton:
text:"enter video url"
size_hint: .45 , .2
pos_hint:{"center_x":.5,"top":1}
on_press: root.url = entry.text
CustButton:
text:"create"
size_hint: .45 , .2
pos_hint:{"center_x":.5,"top":1}
on_press: root.create_instance(root.name,root.url)
我只是不知道什麼是問題,我認爲問題是在創建實例方法
'self.x =視頻(VIDEO_NAME = self.name,VIDEO_URL = self.url)'FloatLayout早已屬性x是x軸上的位置。你想在這裏做什麼?你試圖分配的東西不符合它的期望。它期望x achses的價值。 – PalimPalim
我想要做的是從textinput採取video_name和video_url,然後創建一個實例f從視頻類,這是從sqlalchemy declarative_base繼承,並通過這種方式,我可以通過這些方法插入到表'videos_test'這些方法session.add(instance)session.commit()我希望幫助理解我在這裏試圖做什麼 –
self.x已經被佔用了。你爲什麼不用像self.video那樣的東西? – PalimPalim