我为一种android锁定的东西编写了一个代码,每当我尝试使用id获取特定的ClickableImage时,它会引发以下错误:
AttributeError: 'super' object has no attribute '__getattr__'
Run Code Online (Sandbox Code Playgroud)
我花了好几个小时试图寻找这个问题的解决方案,我看着其他人有同样的问题,人们告诉他们改变构建器的站点,因为需要先调用它来获取ids属性或其他东西像那样,但每次我移动构建器时,都会引发错误"class not defined".有线索吗?
这是我的代码:
from kivy.app import App
from kivy.config import Config
from kivy.lang import Builder
from kivy.graphics import Line
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.widget import Widget
from kivy.uix.image import Image
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.behaviors import ButtonBehavior
#Variables
cords = ()
bld = Builder.load_file('conf.kv')
class Manager(ScreenManager): pass
class Principal(Screen): pass
class ClickableImage(ButtonBehavior, Image):
def on_press(self):
self.source = 'button_press.png'
def on_release(self):
self.source = 'button.png'
self.ids.uno.source = 'button_press.png'
class canva(Widget): …
Run Code Online (Sandbox Code Playgroud) 我想在运行于ubuntu 64bit的kivy应用程序中有一个Web视图。我在网上浏览,浏览了kivy的文档,并在StackOverflow上搜索了答案,但是找不到任何可以完成工作的东西。需要在kivy应用程序中将简单的网页呈现为小部件。请帮帮我。
我正在尝试在Raspberry Pi3上设置“非品牌”触摸屏,并且在运行python / kivy程序时遇到麻烦,从视觉上看一切正常,但是每当我需要移动滑块,按按钮或其他操作时。输入y轴是倒置的,请注意,当我在Windows机器上运行它时,它可以正常工作 。您可以看到按钮的输入在y轴上倒置了
我确实知道它存在并且已经尝试过,但是它并不能解决问题(就我而言)。 /sf/answers/2404112091/
而且我已经尝试将其修复在(以我为例)(。kivy / config.ini)下的配置文件中,并且您可以看到它读取了invert_y选项,但对值1和0均不执行任何操作。
root@raspberrypi:/media/pi/64D933A55CDD560F/PrinterSoftware# python MC.py
[INFO ] [Logger ] Record log in /root/.kivy/logs/kivy_17-02-06_10.txt
[INFO ] [Kivy ] v1.9.2.dev0, git-57d41c9, 20170206
[INFO ] [Python ] v2.7.9 (default, Mar 8 2015, 00:52:26)
[GCC 4.9.2]
[INFO ] [Factory ] 193 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: egl_rpi
[INFO ] [GL ] Using the "OpenGL ES 2" …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将该popup.dismiss()
功能绑定到BoxLayout
Kivy 弹出窗口中a 内的按钮。
我不断收到错误消息:
None Type' 对象没有属性 'bind'。
我一直在寻找答案 2 天,但似乎无法找到我要找的东西。任何帮助,将不胜感激。
另外,如果您对我的代码有任何提示,我将不胜感激,因为我是新手,而且我确信其中有很多错误。
我没有添加 .kv 代码,因为我认为它不适用于我目前遇到的问题。
代码片段:
import kivy
kivy.require('1.9.1')
from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from KivyCalendar import CalendarWidget
from KivyCalendar import DatePicker
from kivy.properties import ObjectProperty, OptionProperty
from kivy.uix.listview import ListItemButton
from kivy.uix.modalview import ModalView
from kivy.uix.popup import Popup
from kivy.uix.widget import Widget
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput …
Run Code Online (Sandbox Code Playgroud) 我试图在我的测试 UI 中对齐标签和按钮,这是我的 kv 文件
<test>:
Label:
text: "foo"
color: 0,1,0,1
#pos:120,20
pos_hint:{"right":0.1,"top":1}
Label:
text:"boo"
color: 0,0,1,1
#pos:80,20
pos_hint:{"right":0.1,"top":0.5}
Label:
text:"bar"
color: 1,0,0,1
#pos:20,120
pos_hint:{"right":0.1,"top":0.1}
Button:
text:"goo"
size_hint:0.1,0.1
Run Code Online (Sandbox Code Playgroud)
我能够使用pos成功创建标签 foo、boo 和 bar,但是当我使用pos_hint 时它返回空白输出?
我在 kivy 中有这个切换按钮,我希望它在按下时动画(这是一个开机按钮 gif)但没有循环。我似乎找不到任何关于此的有用信息。任何帮助表示赞赏,谢谢!
我在 .kv 文件中使用弹出窗口时遇到问题。我知道弹出窗口只能有一个小部件作为其内容,但是如果我只将 GridLayout 作为包含标签和按钮的子项传递,这不应该起作用吗?
这是我的Python代码:
import kivy, LabelB
from kivy.app import App
from kivy.graphics import Color, Rectangle
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.properties import ObjectProperty, StringProperty
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
Builder.load_file('main.kv')
class CustomPopup(Popup):
pass
class MenuScreen(Screen):
def open_popup(self):
the_popup = CustomPopup()
the_popup.open()
class SurveyScreen(Screen):
pass
sm = ScreenManager(transition=FadeTransition())
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SurveyScreen(name='survey'))
class MainApp(App):
def build(self):
return sm
if …
Run Code Online (Sandbox Code Playgroud) 我在 ScrollView 中有一个 Label,希望当(多行)文本占用太多行时,用户可以向上和向下滚动,当行太长时,用户可以向左和向右滚动。我无法让它滚动。这是我的 Builder 字符串的相关部分:
ScrollView:
id: scrollLayout
size_hint_y: 0.9
Label:
id: sortFilesDisplay
size_hint_y: 0.9
text: 'Drag\\n in\\n files\\n to\\n be\\n sorted\\n yea\\n go\\n now\\n testing\\n please\\n work\\n now\\help'
Run Code Online (Sandbox Code Playgroud)
我已经阅读了ScrollView 上的Kivy 文档,说我需要指定 size_hints 之一来启用滚动。我已经阅读了一些关于让 ScrollView 工作的 SO 帖子:
但它们都涉及嵌入某种布局(例如GridLayout),但我没有嵌入布局,只是一个标签。我已经尝试将 minimum_height 设置为我在这些帖子中看到的各种内容,但仍然没有效果。
这两个 size_hint_y 在那里只是为了按照指示去做;我不需要它们。还尝试将它们设置为无。
有任何想法吗?
此外,文本的静态字符串不是我最终想要的。我希望标签在字符串更改时保持可滚动(当用户放入新的文件列表时),但我认为“动态”操作可能是一个问题,所以现在我“退回”尝试静态字符串。
有没有办法放大桌面kivy应用程序上的图像(例如,用鼠标滚轮缩放)?它似乎在这里讨论:https : //github.com/kivy/kivy/issues/3563但我看不出有没有解决的办法。
我从我的kivy应用程序中开始使用静态图像。我想添加缩放/平移图像的功能。我不希望图像框的实际大小发生变化,仅添加缩放/平移功能即可,例如,您可能希望与Google地图进行交互。
可能的编程方向
从我所读的内容中,我应该使用Scatter(?),并且看到可以手动设置Scatter比例来放大/缩小图像。
我最初的想法是,我将不得不添加一个单独的带有滚动视图的小部件以包含分散的布局,并使图像框架保持一致的大小。然后,我需要添加一个可动态更改比例值的事件。
问题所在
on_motion
活动看起来很有希望。我的应用程序可以使用滑块更新值,但是当我尝试使用类似的方法时on_motion,
会AttributeError: motion
出错我正在努力创建小部件。大多数文档似乎都.add_widget(...)
在python文件中使用。是否可以从kv文件中执行此操作?我想象这个过程类似于屏幕和屏幕管理器,但是我正在努力寻找一种可行的方法。
有没有更直接的方法可以做到这一点?
有没有一种方法可以on_motion
在我的kv文件中使用type事件来使用鼠标滚轮调整此值?
我给出了一个简单的示例,展示了我的kivy应用程序的结构-以及我尝试添加Scatter所做的事情。我想我需要将其放入自己的小部件中,以保持图像大小相同?
玩具实例
import kivy
from kivy.lang import Builder
from kivy.core.window import Window
kivy.require('1.1.0')
from kivy.app import App
presentation = Builder.load_file("scatter.kv")
class TestApp(App):
def build(self):
Window.clearcolor = (1, 1, 1, 1)
return presentation
# def foo():
# print("You've reached foo")
if __name__ == '__main__':
TestApp().run()
Run Code Online (Sandbox Code Playgroud)
和
#:kivy 1.10.0
GridLayout:
cols: 2
Scatter:
scale: 5
# on_motion: …
Run Code Online (Sandbox Code Playgroud) 这是主要的.py
from kivy.app import App
class WeatherApp(App):
pass
if __name__ == '__main__':
WeatherApp().run()
Run Code Online (Sandbox Code Playgroud)
天气.kv 是:
AddLocationForm:
<AddLocationForm@BoxLayout>:
orientation: 'vertical'
BoxLayout:
TextInput:
Button:
text: "Search"
Button:
text: "Current Location"
ListView:
item_strings: ["Palo Alto, MX", "Palo Alto, US"]
Run Code Online (Sandbox Code Playgroud)
它似乎无法识别列表视图。我已经看到其他使用带有“from kivy.uix.listview import ListView”的列表视图,但这也不起作用,我不知道为什么。
kivy.factory.FactoryException:未知类