当前位置: 首页>>代码示例>>Python>>正文


Python ServiceItem.get_rendered_frame方法代码示例

本文整理汇总了Python中openlp.core.lib.ServiceItem.get_rendered_frame方法的典型用法代码示例。如果您正苦于以下问题:Python ServiceItem.get_rendered_frame方法的具体用法?Python ServiceItem.get_rendered_frame怎么用?Python ServiceItem.get_rendered_frame使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在openlp.core.lib.ServiceItem的用法示例。


在下文中一共展示了ServiceItem.get_rendered_frame方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: serviceitem_add_image_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def serviceitem_add_image_test(self):
        """
        Test the Service Item - add image test
        """
        # GIVEN: A new service item and a mocked renderer
        service_item = ServiceItem(None)
        service_item.name = u'test'

        # WHEN: adding image to a service item
        test_image = os.path.join(TESTPATH, u'church.jpg')
        service_item.add_from_image(test_image, u'Image Title')

        # THEN: We should get back a valid service item
        assert service_item.is_valid is True, u'The new service item should be valid'
        assert len(service_item._display_frames) == 0, u'The service item has no display frames'

        # THEN: We should have a page of output.
        assert len(service_item._raw_frames) == 1, u'A valid rendered Service Item has display frames'
        assert service_item.get_rendered_frame(0) == test_image

        # WHEN: adding a second image to a service item
        service_item.add_from_image(test_image, u'Image1 Title')

        # THEN: We should have an increased page of output.
        assert len(service_item._raw_frames) == 2, u'A valid rendered Service Item has display frames'
        assert service_item.get_rendered_frame(0) == test_image
        assert service_item.get_rendered_frame(0) == service_item.get_rendered_frame(1)

        # WHEN requesting a saved service item
        service = service_item.get_service_repr(True)

        # THEN: We should have two parts of the service.
        assert len(service) == 2, u'A saved service has two parts'
        assert service[u'header'][u'name']  == u'test' , u'A test plugin was returned'
        assert service[u'data'][0][u'title'] == u'Image Title' , u'The first title name matches the request'
        assert service[u'data'][0][u'path'] == test_image , u'The first image name matches'
        assert service[u'data'][0][u'title'] != service[u'data'][1][u'title'], \
            u'The individual titles should not match'
        assert service[u'data'][0][u'path'] == service[u'data'][1][u'path'], u'The file paths should match'

        # WHEN validating a service item
        service_item.validate_item([u'jpg'])

        # THEN the service item should be valid
        assert service_item.is_valid is True, u'The new service item should be valid'

        # WHEN: adding a second image to a service item
        service_item.add_from_image(u'resources/church1.jpg', u'Image1 Title')

        # WHEN validating a service item
        service_item.validate_item([u'jpg'])

        # THEN the service item should be valid
        assert service_item.is_valid is False, u'The service item is not valid due to validation changes'
开发者ID:marmyshev,项目名称:transitions,代码行数:56,代码来源:test_serviceitem.py

示例2: serviceitem_load_image_from_local_service_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def serviceitem_load_image_from_local_service_test(self):
        """
        Test the Service Item - adding an image from a saved local service
        """
        # GIVEN: A new service item and a mocked add icon function
        image_name1 = 'image_1.jpg'
        image_name2 = 'image_2.jpg'
        test_file1 = os.path.join('/home/openlp', image_name1)
        test_file2 = os.path.join('/home/openlp', image_name2)
        frame_array1 = {'path': test_file1, 'title': image_name1}
        frame_array2 = {'path': test_file2, 'title': image_name2}

        service_item = ServiceItem(None)
        service_item.add_icon = MagicMock()

        service_item2 = ServiceItem(None)
        service_item2.add_icon = MagicMock()

        # WHEN: adding an image from a saved Service and mocked exists
        line = self.convert_file_service_item('serviceitem_image_2.osj')
        line2 = self.convert_file_service_item('serviceitem_image_2.osj', 1)

        with patch('openlp.core.ui.servicemanager.os.path.exists') as mocked_exists:
            mocked_exists.return_value = True
            service_item2.set_from_service(line2)
            service_item.set_from_service(line)


        # THEN: We should get back a valid service item

        # This test is copied from service_item.py, but is changed since to conform to
        # new layout of service item. The layout use in serviceitem_image_2.osd is actually invalid now.
        assert service_item.is_valid is True, 'The first service item should be valid'
        assert service_item2.is_valid is True, 'The second service item should be valid'
        assert service_item.get_rendered_frame(0) == test_file1, 'The first frame should match the path to the image'
        assert service_item2.get_rendered_frame(0) == test_file2, 'The Second frame should match the path to the image'
        assert service_item.get_frames()[0] == frame_array1, 'The return should match the frame array1'
        assert service_item2.get_frames()[0] == frame_array2, 'The return should match the frame array2'
        assert service_item.get_frame_path(0) == test_file1, 'The frame path should match the full path to the image'
        assert service_item2.get_frame_path(0) == test_file2, 'The frame path should match the full path to the image'
        assert service_item.get_frame_title(0) == image_name1, 'The 1st frame title should match the image name'
        assert service_item2.get_frame_title(0) == image_name2, 'The 2nd frame title should match the image name'
        assert service_item.title.lower() == service_item.name, \
            'The plugin name should match the display title, as there are > 1 Images'
        assert service_item.is_image() is True, 'This service item should be of an "image" type'
        assert service_item.is_capable(ItemCapabilities.CanMaintain) is True, \
            'This service item should be able to be Maintained'
        assert service_item.is_capable(ItemCapabilities.CanPreview) is True, \
            'This service item should be able to be be Previewed'
        assert service_item.is_capable(ItemCapabilities.CanLoop) is True, \
            'This service item should be able to be run in a can be made to Loop'
        assert service_item.is_capable(ItemCapabilities.CanAppend) is True, \
            'This service item should be able to have new items added to it'
开发者ID:marmyshev,项目名称:bug_1117098,代码行数:55,代码来源:test_serviceitem.py

示例3: generate_preview

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def generate_preview(self, theme_data, force_page=False):
        """
        Generate a preview of a theme.

        :param theme_data:  The theme to generated a preview for.
        :param force_page: Flag to tell message lines per page need to be generated.
        """
        # save value for use in format_slide
        self.force_page = force_page
        # build a service item to generate preview
        service_item = ServiceItem()
        if self.force_page:
            # make big page for theme edit dialog to get line count
            service_item.add_from_text(VERSE_FOR_LINE_COUNT)
        else:
            service_item.add_from_text(VERSE)
        service_item.raw_footer = FOOTER
        # if No file do not update cache
        if theme_data.background_filename:
            self.image_manager.add_image(
                theme_data.background_filename, ImageSource.Theme, QtGui.QColor(theme_data.background_border_color))
        theme_data, main, footer = self.pre_render(theme_data)
        service_item.theme_data = theme_data
        service_item.main = main
        service_item.footer = footer
        service_item.render(True)
        if not self.force_page:
            self.display.build_html(service_item)
            raw_html = service_item.get_rendered_frame(0)
            self.display.text(raw_html, False)
            preview = self.display.preview()
            return preview
        self.force_page = False
开发者ID:imkernel,项目名称:openlp,代码行数:35,代码来源:renderer.py

示例4: service_item_load_custom_from_service_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def service_item_load_custom_from_service_test(self):
        """
        Test the Service Item - adding a custom slide from a saved service
        """
        # GIVEN: A new service item and a mocked add icon function
        service_item = ServiceItem(None)
        service_item.add_icon = MagicMock()

        # WHEN: We add a custom from a saved service
        line = convert_file_service_item(TEST_PATH, 'serviceitem_custom_1.osj')
        service_item.set_from_service(line)

        # THEN: We should get back a valid service item
        self.assertTrue(service_item.is_valid, 'The new service item should be valid')
        assert_length(0, service_item._display_frames, 'The service item should have no display frames')
        assert_length(5, service_item.capabilities, 'There should be 5 default custom item capabilities')

        # WHEN: We render the frames of the service item
        service_item.render(True)

        # THEN: The frames should also be valid
        self.assertEqual('Test Custom', service_item.get_display_title(), 'The title should be "Test Custom"')
        self.assertEqual(VERSE[:-1], service_item.get_frames()[0]['text'],
                         'The returned text matches the input, except the last line feed')
        self.assertEqual(VERSE.split('\n', 1)[0], service_item.get_rendered_frame(1),
                         'The first line has been returned')
        self.assertEqual('Slide 1', service_item.get_frame_title(0), '"Slide 1" has been returned as the title')
        self.assertEqual('Slide 2', service_item.get_frame_title(1), '"Slide 2" has been returned as the title')
        self.assertEqual('', service_item.get_frame_title(2), 'Blank has been returned as the title of slide 3')
开发者ID:crossroadchurch,项目名称:paul,代码行数:31,代码来源:test_serviceitem.py

示例5: service_item_load_song_and_audio_from_service_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def service_item_load_song_and_audio_from_service_test(self):
        """
        Test the Service Item - adding a song slide from a saved service
        """
        # GIVEN: A new service item and a mocked add icon function
        service_item = ServiceItem(None)
        service_item.add_icon = MagicMock()

        # WHEN: We add a custom from a saved service
        line = convert_file_service_item(TEST_PATH, 'serviceitem-song-linked-audio.osj')
        service_item.set_from_service(line, '/test/')

        # THEN: We should get back a valid service item
        self.assertTrue(service_item.is_valid, 'The new service item should be valid')
        assert_length(0, service_item._display_frames, 'The service item should have no display frames')
        assert_length(7, service_item.capabilities, 'There should be 7 default custom item capabilities')

        # WHEN: We render the frames of the service item
        service_item.render(True)

        # THEN: The frames should also be valid
        self.assertEqual('Amazing Grace', service_item.get_display_title(), 'The title should be "Amazing Grace"')
        self.assertEqual(VERSE[:-1], service_item.get_frames()[0]['text'],
                         'The returned text matches the input, except the last line feed')
        self.assertEqual(VERSE.split('\n', 1)[0], service_item.get_rendered_frame(1),
                         'The first line has been returned')
        self.assertEqual('Amazing Grace! how sweet the s', service_item.get_frame_title(0),
                         '"Amazing Grace! how sweet the s" has been returned as the title')
        self.assertEqual('’Twas grace that taught my hea', service_item.get_frame_title(1),
                         '"’Twas grace that taught my hea" has been returned as the title')
        self.assertEqual('/test/amazing_grace.mp3', service_item.background_audio[0],
                         '"/test/amazing_grace.mp3" should be in the background_audio list')
开发者ID:crossroadchurch,项目名称:paul,代码行数:34,代码来源:test_serviceitem.py

示例6: serviceitem_load_image_from_service_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def serviceitem_load_image_from_service_test(self):
        """
        Test the Service Item - adding an image from a saved service
        """
        # GIVEN: A new service item and a mocked add icon function
        image_name = 'image_1.jpg'
        test_file = os.path.join(TEST_PATH, image_name)
        frame_array = {'path': test_file, 'title': image_name}

        service_item = ServiceItem(None)
        service_item.add_icon = MagicMock()

        # WHEN: adding an image from a saved Service and mocked exists
        line = self.convert_file_service_item('serviceitem_image_1.osj')
        with patch('openlp.core.ui.servicemanager.os.path.exists') as mocked_exists:
            mocked_exists.return_value = True
            service_item.set_from_service(line, TEST_PATH)

        # THEN: We should get back a valid service item
        assert service_item.is_valid is True, 'The new service item should be valid'
        assert service_item.get_rendered_frame(0) == test_file, 'The first frame should match the path to the image'
        assert service_item.get_frames()[0] == frame_array, 'The return should match frame array1'
        assert service_item.get_frame_path(0) == test_file, 'The frame path should match the full path to the image'
        assert service_item.get_frame_title(0) == image_name, 'The frame title should match the image name'
        assert service_item.get_display_title() == image_name, 'The display title should match the first image name'
        assert service_item.is_image() is True, 'This service item should be of an "image" type'
        assert service_item.is_capable(ItemCapabilities.CanMaintain) is True, \
            'This service item should be able to be Maintained'
        assert service_item.is_capable(ItemCapabilities.CanPreview) is True, \
            'This service item should be able to be be Previewed'
        assert service_item.is_capable(ItemCapabilities.CanLoop) is True, \
            'This service item should be able to be run in a can be made to Loop'
        assert service_item.is_capable(ItemCapabilities.CanAppend) is True, \
            'This service item should be able to have new items added to it'
开发者ID:marmyshev,项目名称:bug_1117098,代码行数:36,代码来源:test_serviceitem.py

示例7: service_item_load_image_from_service_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def service_item_load_image_from_service_test(self):
        """
        Test the Service Item - adding an image from a saved service
        """
        # GIVEN: A new service item and a mocked add icon function
        image_name = 'image_1.jpg'
        test_file = os.path.join(TEST_PATH, image_name)
        frame_array = {'path': test_file, 'title': image_name}

        service_item = ServiceItem(None)
        service_item.add_icon = MagicMock()

        # WHEN: adding an image from a saved Service and mocked exists
        line = convert_file_service_item(TEST_PATH, 'serviceitem_image_1.osj')
        with patch('openlp.core.ui.servicemanager.os.path.exists') as mocked_exists,\
                patch('openlp.core.lib.serviceitem.create_thumb') as mocked_create_thumb,\
                patch('openlp.core.lib.serviceitem.AppLocation.get_section_data_path') as \
                mocked_get_section_data_path:
            mocked_exists.return_value = True
            mocked_get_section_data_path.return_value = os.path.normpath('/path/')
            service_item.set_from_service(line, TEST_PATH)

        # THEN: We should get back a valid service item
        self.assertTrue(service_item.is_valid, 'The new service item should be valid')
        self.assertEqual(os.path.normpath(test_file), os.path.normpath(service_item.get_rendered_frame(0)),
                         'The first frame should match the path to the image')
        self.assertEqual(frame_array, service_item.get_frames()[0],
                         'The return should match frame array1')
        self.assertEqual(test_file, service_item.get_frame_path(0),
                         'The frame path should match the full path to the image')
        self.assertEqual(image_name, service_item.get_frame_title(0),
                         'The frame title should match the image name')
        self.assertEqual(image_name, service_item.get_display_title(),
                         'The display title should match the first image name')
        self.assertTrue(service_item.is_image(), 'This service item should be of an "image" type')
        self.assertTrue(service_item.is_capable(ItemCapabilities.CanMaintain),
                        'This service item should be able to be Maintained')
        self.assertTrue(service_item.is_capable(ItemCapabilities.CanPreview),
                        'This service item should be able to be be Previewed')
        self.assertTrue(service_item.is_capable(ItemCapabilities.CanLoop),
                        'This service item should be able to be run in a can be made to Loop')
        self.assertTrue(service_item.is_capable(ItemCapabilities.CanAppend),
                        'This service item should be able to have new items added to it')
开发者ID:crossroadchurch,项目名称:paul,代码行数:45,代码来源:test_serviceitem.py

示例8: serviceitem_add_command_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def serviceitem_add_command_test(self):
        """
        Test the Service Item - add command test
        """
        # GIVEN: A new service item and a mocked renderer
        service_item = ServiceItem(None)
        service_item.name = u'test'

        # WHEN: adding image to a service item
        test_file = os.path.join(TESTPATH, u'church.jpg')
        service_item.add_from_command(TESTPATH, u'church.jpg', test_file)

        # THEN: We should get back a valid service item
        assert service_item.is_valid is True, u'The new service item should be valid'
        assert len(service_item._display_frames) == 0, u'The service item has no display frames '

        # THEN: We should have a page of output.
        assert len(service_item._raw_frames) == 1, u'A valid rendered Service Item has one raw frame'
        assert service_item.get_rendered_frame(0) == test_file, u'The image matches the input'

        # WHEN requesting a saved service item
        service = service_item.get_service_repr(True)

        # THEN: We should have two parts of the service.
        assert len(service) == 2, u'A saved service has two parts'
        assert service[u'header'][u'name']  == u'test' , u'A test plugin'
        assert service[u'data'][0][u'title'] == u'church.jpg' , u'The first title name '
        assert service[u'data'][0][u'path'] == TESTPATH , u'The first image name'
        assert service[u'data'][0][u'image'] == test_file , u'The first image name'

        # WHEN validating a service item
        service_item.validate_item([u'jpg'])

        # THEN the service item should be valid
        assert service_item.is_valid is True, u'The service item should be valid'

        # WHEN validating a service item with a different suffix
        service_item.validate_item([u'png'])

        # THEN the service item should not be valid
        assert service_item.is_valid is False, u'The service item is not valid'
开发者ID:marmyshev,项目名称:transitions,代码行数:43,代码来源:test_serviceitem.py

示例9: serviceitem_add_text_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def serviceitem_add_text_test(self):
        """
        Test the Service Item - add text test
        """
        # GIVEN: A new service item
        service_item = ServiceItem(None)

        # WHEN: adding text to a service item
        service_item.add_from_text(VERSE)
        service_item.raw_footer = FOOTER

        # THEN: We should get back a valid service item
        assert service_item.is_valid is True, u'The new service item should be valid'
        assert service_item.missing_frames() is False, u'check frames loaded '

        # WHEN: Render called
        assert len(service_item._display_frames) == 0, u'A blank Service Item with no display frames'
        service_item.render(True)

        # THEN: We should have a page of output.
        assert len(service_item._display_frames) == 1, u'A valid rendered Service Item has 1 display frame'
        assert service_item.get_rendered_frame(0) == VERSE.split(u'\n')[0], u'A output has rendered correctly.'
开发者ID:marmyshev,项目名称:transitions,代码行数:24,代码来源:test_serviceitem.py

示例10: serviceitem_load_custom_from_service_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def serviceitem_load_custom_from_service_test(self):
        """
        Test the Service Item - adding a custom slide from a saved service
        """
        # GIVEN: A new service item and a mocked add icon function
        service_item = ServiceItem(None)
        service_item.add_icon = MagicMock()

        # WHEN: adding a custom from a saved Service
        line = self.convert_file_service_item('serviceitem_custom_1.osj')
        service_item.set_from_service(line)

        # THEN: We should get back a valid service item
        assert service_item.is_valid is True, 'The new service item should be valid'
        assert len(service_item._display_frames) == 0, 'The service item should have no display frames'
        assert len(service_item.capabilities) == 5, 'There should be 5 default custom item capabilities'
        service_item.render(True)
        assert service_item.get_display_title() == 'Test Custom', 'The title should be "Test Custom"'
        assert service_item.get_frames()[0]['text'] == VERSE[:-1], \
            'The returned text matches the input, except the last line feed'
        assert service_item.get_rendered_frame(1) == VERSE.split('\n', 1)[0], 'The first line has been returned'
        assert service_item.get_frame_title(0) == 'Slide 1', '"Slide 1" has been returned as the title'
        assert service_item.get_frame_title(1) == 'Slide 2', '"Slide 2" has been returned as the title'
        assert service_item.get_frame_title(2) == '', 'Blank has been returned as the title of slide 3'
开发者ID:marmyshev,项目名称:bug_1117098,代码行数:26,代码来源:test_serviceitem.py

示例11: service_item_load_image_from_local_service_test

# 需要导入模块: from openlp.core.lib import ServiceItem [as 别名]
# 或者: from openlp.core.lib.ServiceItem import get_rendered_frame [as 别名]
    def service_item_load_image_from_local_service_test(self):
        """
        Test the Service Item - adding an image from a saved local service
        """
        # GIVEN: A new service item and a mocked add icon function
        image_name1 = 'image_1.jpg'
        image_name2 = 'image_2.jpg'
        test_file1 = os.path.normpath(os.path.join('/home/openlp', image_name1))
        test_file2 = os.path.normpath(os.path.join('/home/openlp', image_name2))
        frame_array1 = {'path': test_file1, 'title': image_name1}
        frame_array2 = {'path': test_file2, 'title': image_name2}

        service_item = ServiceItem(None)
        service_item.add_icon = MagicMock()

        service_item2 = ServiceItem(None)
        service_item2.add_icon = MagicMock()

        # WHEN: adding an image from a saved Service and mocked exists
        line = convert_file_service_item(TEST_PATH, 'serviceitem_image_2.osj')
        line2 = convert_file_service_item(TEST_PATH, 'serviceitem_image_2.osj', 1)

        with patch('openlp.core.ui.servicemanager.os.path.exists') as mocked_exists, \
                patch('openlp.core.lib.serviceitem.create_thumb') as mocked_create_thumb, \
                patch('openlp.core.lib.serviceitem.AppLocation.get_section_data_path') as \
                mocked_get_section_data_path:
            mocked_exists.return_value = True
            mocked_get_section_data_path.return_value = os.path.normpath('/path/')
            service_item2.set_from_service(line2)
            service_item.set_from_service(line)

        # THEN: We should get back a valid service item

        # This test is copied from service_item.py, but is changed since to conform to
        # new layout of service item. The layout use in serviceitem_image_2.osd is actually invalid now.
        self.assertTrue(service_item.is_valid, 'The first service item should be valid')
        self.assertTrue(service_item2.is_valid, 'The second service item should be valid')
        # These test will fail on windows due to the difference in folder seperators
        if os.name != 'nt':
            self.assertEqual(test_file1, service_item.get_rendered_frame(0),
                             'The first frame should match the path to the image')
            self.assertEqual(test_file2, service_item2.get_rendered_frame(0),
                             'The Second frame should match the path to the image')
            self.assertEqual(frame_array1, service_item.get_frames()[0], 'The return should match the frame array1')
            self.assertEqual(frame_array2, service_item2.get_frames()[0], 'The return should match the frame array2')
            self.assertEqual(test_file1, service_item.get_frame_path(0),
                             'The frame path should match the full path to the image')
            self.assertEqual(test_file2, service_item2.get_frame_path(0),
                             'The frame path should match the full path to the image')
        self.assertEqual(image_name1, service_item.get_frame_title(0),
                         'The 1st frame title should match the image name')
        self.assertEqual(image_name2, service_item2.get_frame_title(0),
                         'The 2nd frame title should match the image name')
        self.assertEqual(service_item.name, service_item.title.lower(),
                         'The plugin name should match the display title, as there are > 1 Images')
        self.assertTrue(service_item.is_image(), 'This service item should be of an "image" type')
        self.assertTrue(service_item.is_capable(ItemCapabilities.CanMaintain),
                        'This service item should be able to be Maintained')
        self.assertTrue(service_item.is_capable(ItemCapabilities.CanPreview),
                        'This service item should be able to be be Previewed')
        self.assertTrue(service_item.is_capable(ItemCapabilities.CanLoop),
                        'This service item should be able to be run in a can be made to Loop')
        self.assertTrue(service_item.is_capable(ItemCapabilities.CanAppend),
                        'This service item should be able to have new items added to it')
开发者ID:crossroadchurch,项目名称:paul,代码行数:66,代码来源:test_serviceitem.py


注:本文中的openlp.core.lib.ServiceItem.get_rendered_frame方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。