kivy - 如何将时钟小部件添加到屏幕?
问题描述
我正在尝试制作一个 GUI,我想要一个这样的时钟: https ://github.com/dwalker0044/KivyDigitalClock
我想将它添加到具有导航到其他页面的按钮的菜单页面,但我无法弄清楚。我导入了文件,但我不知道如何将它添加到屏幕上。我已经有一段时间了,所以如果有人可以帮助我。
这是我的代码:
主文件
from kivy.config import Config
Config.set('kivy', 'keyboard_mode', 'systemanddock')
#KivyTest.py
import kivy
kivy.require('1.0.6') # replace with your current kivy version !
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
from kivy.properties import ObjectProperty
from kivy.clock import Clock
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
#from cefpython3 import cefpython as cef
from glob import glob
from random import randint
from os.path import join, dirname
from kivy.app import App
from kivy.logger import Logger
from kivy.uix.scatter import Scatter
from kivy.uix.carousel import Carousel
from kivy.uix.image import AsyncImage
from kivy.uix.scrollview import ScrollView
from kivy.properties import StringProperty
import sys
import platform
import webbrowser
import random
import os
import time
import datetime
from kivy.app import App
from kivy.clock import Clock
from kivy.properties import StringProperty
from kivy.properties import NumericProperty
from kivy.uix.widget import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.graphics import *
from digitalclock import DigitalClock
from digitalclock import SecondsIndicator
class Face(Screen):
pass
class Menu(Screen):
def open_Browser(self):
sys.excepthook = cef.ExceptHook # To shutdown all CEF processes on error
cef.Initialize()
cef.CreateBrowserSync(url="https://www.google.com/",
window_title="Google")
cef.MessageLoop()
cef.Shutdown()
def open_YouTube(self):
sys.excepthook = cef.ExceptHook # To shutdown all CEF processes on error
cef.Initialize()
cef.CreateBrowserSync(url="https://www.youtube.com/",
window_title="YouTube")
cef.MessageLoop()
cef.Shutdown()
def open_Pictures(self):
picturesApp = PicturesApp()
picturesApp.run()
def open_Camera(self):
TestCamera().run()
class Commands(Screen):
pass
class Manager(ScreenManager):
face = ObjectProperty(None)
menu = ObjectProperty(None)
class IonApp(App):
def build(self):
m = ScreenManager(transition = NoTransition())
m.add_widget(DigitalClock(name='Clock'))
return m
if __name__ == '__main__':
IonApp().run()
解决方案
a的add_widget()
方法ScreenManager
只接受Screen
实例。
当您尝试将DigitalClock
实例添加到您的ScreenManager
.
您需要将该DigitalClock
实例添加到您的Screen
对象之一(例如 yourMenu
或 your Commands
),然后将其添加Screen
到您的ScreenManager
using 中add_widget()
。
该KivyDigitalClock
代码没有为包含到其他代码中做好充分准备。假设您已将数字时钟代码放在digitalclock
文件夹中(如代码中所示),那么您还需要Builder.load_file('digitalclock/digitalclock.kv')
在代码中调用。一个很好的地方就是在你IonApp().run()
打电话之前。
所以这是我认为可行的:
class IonApp(App):
def build(self):
m = ScreenManager(transition = NoTransition())
screen = Commands(name='commands')
dc = DigitalClock()
screen.add_widget(dc)
m.add_widget(screen)
dc.update()
return m
if __name__ == '__main__':
Builder.load_file('digitalclock/digitalclock.kv')
IonApp().run()
推荐阅读
- amazon-web-services - AWS 中的多区域 Cassandra 仅在“nodetool 状态”上显示本地
- javascript - Why does two recaptcha appear at one moment in time?
- sql-server - 获取大于 SSRS 中当前日期的所有日期
- javascript - webpack.config 的问题
- awk - 创建包含总数和百分比的 bin
- java - 如何触发 Java 单元测试的 JsonProcessingException?
- string - 如何将此数字和符号列表转换为字符串?
- html - 为什么这种悬停效果会将旁边的其他元素推开?
- javascript - 使用 EmberJS 和 Oauth2,失效后如何修改默认路由?
- python - PyPDF 读取文件夹中的每个 PDF