- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Kivy 制作了一个简单的计算器应用程序。我面临的问题是我只能在应用程序中使用一种布局。我可以只使用网格布局,而我需要页面布局和网格布局。我想要一个 slider ,通过它我可以滚动并查看应用程序中的其余按钮,而不是一页上的所有按钮。更准确地说,代码是:
主要.py
from __future__ import division
import kivy
from math import sqrt
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.config import Config
from kivy.uix.pagelayout import PageLayout
class CalcGridLayout(GridLayout):
def something(x):
x+="hi"
return x
# Function called when equals is pressed
def calculate(self, calculation):
if calculation:
try:
# Solve formula and display it in entry
# which is pointed at by display
self.display.text = str(eval(calculation))
except Exception:
self.display.text = "Galat Hai Bhai !"
class CalculatorApp(App):
def build(self):
return CalcGridLayout()
calcApp = CalculatorApp()
calcApp.run()
#buildozer init
#buildozer android debug deploy ---------------code to deploy into apk and then transfer the file into ur mobile
计算器.kv:
# Custom button
<CustButton@Button>:
font_size: 65
#color:.25,.80,.92,1
size:100,100
background_color:.50,.50,.50,1
# Define id so I can refer to the CalcGridLayout
# class functions
# Display points to the entry widget
<CalcGridLayout>:
id: calculator
display: entry
rows: 8
padding: 0
spacing: 0
# Where input is displayed
BoxLayout:
TextInput:
id: entry
font_size: 80
multiline: False
# When buttons are pressed update the entry
BoxLayout:
spacing: 0
CustButton:
text: "7"
on_press: entry.text += self.text
CustButton:
text: "8"
on_press: entry.text += self.text
CustButton:
text: "9"
on_press: entry.text += self.text
CustButton:
text: "+"
on_press: entry.text += self.text
BoxLayout:
spacing: 0
CustButton:
text: "4"
on_press: entry.text += self.text
CustButton:
text: "5"
on_press: entry.text += self.text
CustButton:
text: "6"
on_press: entry.text += self.text
CustButton:
text: "-"
on_press: entry.text += self.text
BoxLayout:
spacing: 0
CustButton:
text: "1"
on_press: entry.text += self.text
CustButton:
text: "2"
on_press: entry.text += self.text
CustButton:
text: "3"
on_press: entry.text += self.text
CustButton:
text: "*"
on_press: entry.text += self.text
# When equals is pressed pass text in the entry
# to the calculate function
BoxLayout:
spacing: 0
CustButton:
text: "AC"
on_press: entry.text = ""
CustButton:
text: "0"
on_press: entry.text += self.text
CustButton:
text: "="
on_press: calculator.calculate(entry.text)
CustButton:
text: "/"
on_press: entry.text += self.text
#my new layout
BoxLayout:
spacing: 0
CustButton:
text: "Del"
on_press: entry.text =entry.text[:-1]
CustButton:
text: "Pow"
on_press: entry.text += '**'
CustButton:
text: "//"
on_press: entry.text +=self.text
CustButton:
text: "mod"
on_press: entry.text +='%'
BoxLayout:
CustButton:
text: "Made for learning face"
在这里所有的数字和操作都只在一页上。我想要另一个我可以滚动的页面,它必须包含像'(',')'这样的操作。我正在考虑为此实现页面布局,但无法在应用程序中同时实现布局(网格+页面)。有人可以帮忙吗?我的第二个疑问是我可以同时在移动设备(有点模拟器)上检查应用程序,我尝试使用 Kivy Remote Shell 但它没有用。每次我必须使用 buildozer init 然后部署它本身需要很多时间。然后用U盘把apk文件传到手机里测试。这很费时间。
最佳答案
你想使用 PageLayout
是对的可以做到,只需按照以下步骤操作:
第 1 步:在您的 main.py 中添加这一行:
from kivy.uix.pagelayout import PageLayout
然后在你的CalcGridLayout
类继承自 PageLayout
而不是 GridLayout
像这样:
class CalcGridLayout(PageLayout):
步骤 02:在 <CalcGridLayout>:
之后的 calculator.kv 中添加以下内容:
GridLayout:
然后根据需要缩进您的代码。下面是一个工作示例..取自您的代码:main.py
from __future__ import division
import kivy
from math import sqrt
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.pagelayout import PageLayout
from kivy.config import Config
from kivy.uix.pagelayout import PageLayout
class CalcGridLayout(PageLayout):
def something(x):
x+="hi"
return x
# Function called when equals is pressed
def calculate(self, calculation):
if calculation:
try:
# Solve formula and display it in entry
# which is pointed at by display
self.display.text = str(eval(calculation))
except Exception:
self.display.text = "Galat Hai Bhai !"
class CalculatorApp(App):
def build(self):
return CalcGridLayout()
if __name__=='__main__':
calcApp = CalculatorApp()
calcApp.run()
和calculator.kv
# Custom button
<CustButton@Button>:
font_size: 65
#color:.25,.80,.92,1
size:100,100
background_color:.50,.50,.50,1
# Define id so I can refer to the CalcGridLayout
# class functions
# Display points to the entry widget
<CalcGridLayout>:
GridLayout:
id: calculator
display: entry
rows: 8
padding: 0
spacing: 0
# Where input is displayed
BoxLayout:
TextInput:
id: entry
font_size: 80
multiline: False
# When buttons are pressed update the entry
BoxLayout:
spacing: 0
CustButton:
text: "7"
on_press: entry.text += self.text
CustButton:
text: "8"
on_press: entry.text += self.text
CustButton:
text: "9"
on_press: entry.text += self.text
CustButton:
text: "+"
on_press: entry.text += self.text
BoxLayout:
spacing: 0
CustButton:
text: "4"
on_press: entry.text += self.text
CustButton:
text: "5"
on_press: entry.text += self.text
CustButton:
text: "6"
on_press: entry.text += self.text
CustButton:
text: "-"
on_press: entry.text += self.text
BoxLayout:
spacing: 0
CustButton:
text: "1"
on_press: entry.text += self.text
CustButton:
text: "2"
on_press: entry.text += self.text
CustButton:
text: "3"
on_press: entry.text += self.text
CustButton:
text: "*"
on_press: entry.text += self.text
# When equals is pressed pass text in the entry
# to the calculate function
BoxLayout:
spacing: 0
CustButton:
text: "AC"
on_press: entry.text = ""
CustButton:
text: "0"
on_press: entry.text += self.text
CustButton:
text: "="
on_press: calculator.calculate(entry.text)
CustButton:
text: "/"
on_press: entry.text += self.text
#my new layout
BoxLayout:
spacing: 0
CustButton:
text: "Del"
on_press: entry.text =entry.text[:-1]
CustButton:
text: "Pow"
on_press: entry.text += '**'
CustButton:
text: "//"
on_press: entry.text +=self.text
CustButton:
text: "mod"
on_press: entry.text +='%'
BoxLayout:
CustButton:
text: "Made for learning face"
BoxLayout:
id: test
Button:
text: 'You can then add more widgets here'
最后关于模拟器,这在 kivy 中还不是真正的模拟器,但是您可以通过将您的应用配置为在特定设备的规范上运行来模拟设备,例如运行您的应用模拟 Motorola droid 2:
KIVY_DPI=240 KIVY_METRICS_DENSITY=1.5 python main.py --size 854x480
或 HTC ONE X:
KIVY_DPI=320 KIVY_METRICS_DENSITY=2 python main.py --size 1280x720
或任何其他设备:
KIVY_DPI=<your-desired-dpi> KIVY_METRICS_DENSITY=<your-device-density> python main.py --size <your-device-size>
关于android - 在单个应用程序和 kivy 模拟器中使用 kivy 上的 2 个页面布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52580273/
我刚刚用 java-swing 为我写了一个桌面时钟,我希望每次登录时该时钟都运行。 为此,我将我的 jar 文件添加到 start 文件夹,我让时钟开始运行。 但我的问题是 - 任务栏中显示的图标允
我正在尝试编写一个程序来检查用户是否上传了新视频。我想让它成为一项后端工作,不断检查用户最近的视频,然后使用我的应用程序向我的用户发送推送。有关于这个问题的任何文档或示例代码吗?我完全不知道从哪里开始
我正在为我的 Raspberry Pi 编写一个程序,该程序由两个主要部分组成: 使用 Spotify-API“Libspotify”搜索音乐并播放音乐的 C 程序。 一个在 apache2 We
我做了一个C++生成命令行并将命令转发给它的程序。目前,我正在将 cmd 控制台的输出发送到一个文件,并在我的 C++ 程序中读取它。但我想让它与管道一起工作。 是否可以从 Windows cmd 行
是否可以使用 C 程序和 malloc 找出处理器的页面大小?而不是使用 sysconf() 调用? 最佳答案 如果你可以#include一些linux内核头文件,你可以在中找到宏PAGE_SIZE
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我想实现一个算法: 从 Ruby on Rails 应用程序获取数据库对象作为输入, 对输入执行计算, 根据计算查询 Rails 数据库, 并根据查询生成一组有序结果。 我将用 C(也许是 Objec
我今天的任务是创建一个 Python 脚本(例如 A.py),它可以执行以下操作: 启动 C 程序(例如 CProg)并传递一些参数 启动另一个 Python 脚本(例如 B.py)并传递其他参数 加
我有一个在后台运行的 .NET 程序,需要创建一个可以与该程序通信的 Windows Shell 扩展。起初我以为我会在 .NET 中创建我的 Shell Extension,并使用 IpcServe
Python 程序做前端工作,C 程序做后端工作。它们中的每一个都是一个单独的过程。 Python 进程充当主进程,向 C 进程发送信号和事件。 C 进程生成统计信息、计数器和信息,这些信息被发送回
如何与 shell 脚本共享 C 头文件? shell 脚本通过命名管道与 C 程序通信。让我们假设 C 头文件中定义的枚举 SAMPLE_ONE 由 C 程序写入管道。 shell 脚本从管道中读出
我有一些客户/候选人提示我的程序不能在他们的 Windows 7 64 位版本上运行(已通过屏幕截图确认)。错误很奇怪,例如: in the trial version i am getting a
这个问题在这里已经有了答案: Why SDL defines main macro? (2 个答案) 关闭 7 年前。 我在 Windows 操作系统下使用 QT Creator 的简单程序中使用
我的导师给了我们一个基本的 C shell 来扩展,我目前正在努力让 shell 在用户在命令行中输入“cd [directory]”时更改目录。我已经得到它来停止段错误,但它不会更改目录。谁能告诉我
我以前有过这个工作,但我使用的是指针。 getenv() 不断崩溃,所以我使用 sprintf() 复制了结果。现在我想用 : 删除并只打印第一次出现的地方。请帮忙! #include #inclu
你好,我第一次使用 C primer plus book 学习 C,然后在第 16 章关于 C11 标准的 _Generic 我在 Eclipse c/c++ 中编写了一个程序并构建它产生了 8 个错
我正在尝试从另一个 C 程序执行 python 程序,其中 py 脚本的返回值为 int array[3] 我可以从 python 退出代码中获取这个数组吗?? 编辑:如果问题不清楚,我可以将 pyt
// The countChicken() method should count the number of occurrences of the word chicken (or some oth
我已经通过 ZMQ 使用同一类成功地从 C# 和 C++ 程序传输数据,其中 C++ 类是数据定义,编译器幸运地将字节数组屏蔽到类。 我如何在 C# 和 Node.js 程序之间做同样的事情?我认为他
任何人都可以为我指明有关 makefile 如何工作以及如何使用 eclipse 从头开始基本程序的好教程的方向吗?我正在为 fedora 和 C++ 使用 eclipse 3.4.1 版。提前致
我是一名优秀的程序员,十分优秀!