GUI:具有TkIn的任意元素的垂直列表

2024-09-19 20:48:58 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,如果完成了基本问题。我正在用TkInter做我的第一步,尝试开发一个到视频库的GUI接口(虽然我有WPF/XAML、MVVM范式和某种程度上的html/css的经验)。在

我想有一个水平列表,可滚动,自定义元素。每个元素都有视频数据,包括元数据(长度、比特率等)、图片(缩略图)和一些操作按钮(播放、删除、标记等)。理想情况下,我也希望有拖动手柄,以重新安排顺序的视频。在

我正在寻找,但找不到,什么应该是WPF中的元素的等价物,绑定到数据和模板。这是否存在于传统知识中,或者对于一个可移植的、免费的框架来说,这是一个过于雄心勃勃的要求?在

即使Tk中不存在模板,我仍然可以通过手动填充父控件来管理(例如,类似于HTML的元素-每个控件都有许多控件)-但我无法找到任意小部件的列表。在

是否存在双向绑定(例如,将项目添加到项目列表中,应自动更新UI)?在

Tk方向正确吗?底层逻辑是用python编写的,所以我在寻找一个python友好的解决方案。带WPF的Iron Python将是显而易见的解决方案,但我希望它是可移植的,而且Iron Python的当前状态不是很有希望,而且我使用的是Iron Python不支持的库。在


Tags: 数据项目模板元素列表视频tkintergui
1条回答
网友
1楼 · 发布于 2024-09-19 20:48:58

生成自定义元素的最常见方法是子类Frame。你可以把你想要的任何东西(图像、按钮等)放在这个框架中,然后你就可以把整个事情当作一个单独的GUI元素来处理。在

import Tkinter as tk
...
class CustomElement(tk.Frame):
    def __init__(self, parent, meta, image_file, ...):
        tk.Frame.__init__(self, parent)
        # <create widgets for image, metadata, etc here>

然后可以创建一个自定义小部件,作为这些项目的容器。例如,您可以使用一个画布,这样可以方便地将这些对象水平排列起来,并且可以在画布上附加一个滚动条。在

最后,tkinter有一个健壮的事件管理系统,可以通过拖放来移动事物。它本身没有任何内置的拖放功能,但是您可以创建自己的抓取手柄和自定义绑定,以便单击并释放来实现它。在

有关使用鼠标在画布上移动对象的示例,请参见以下答案:https://stackoverflow.com/a/6789351/7432

相关问题 更多 >