python - 为什么不能添加多个自定义按钮?
问题描述
我尝试在 Gtk.Box 中添加 3 个按钮,这个 Box 是在我的 Window 设计中创建的(使用 Glade)。见代码;
# Button for IPCamera (MJpeg stream)
self.buttonIPCam1 = Gtk.Button()
self.buttonIPCam1.add(self.imageIPCam)
self.buttonIPCam1.connect("clicked", self.triggerIPCam1)
self.buttonIPCam1.props.relief = Gtk.ReliefStyle.NONE
self.placeButtonCameras.add(self.buttonIPCam1)
self.buttonIPCam2 = Gtk.Button()
self.buttonIPCam2.add(self.imageIPCam)
self.buttonIPCam2.connect("clicked", self.triggerIPCam2)
self.buttonIPCam2.props.relief = Gtk.ReliefStyle.NONE
self.placeButtonCameras.add(self.buttonIPCam2)
self.buttonIPCam3 = Gtk.Button()
self.buttonIPCam3.add(self.imageIPCam)
self.buttonIPCam3.connect("clicked", self.triggerIPCam3)
self.buttonIPCam3.props.relief = Gtk.ReliefStyle.NONE
self.placeButtonCameras.add(self.buttonIPCam3)
self.placeButtonCameras.show_all()
仅显示一个带有图标的按钮并收到此错误消息;
(app_pre.py:3068): Gtk-WARNING **: 13:30:27.422: Attempting to add a widget with type GtkImage to a container of type GtkButton, but the widget is already inside a container of type GtkButton, please remove the widget from its existing container first.
我是初学者,不知道为什么我不能为这个名为“Box”的容器一次添加多个带有图像的按钮;self.placeButtonCameras。
将来,用于从配置中添加按钮(可能有 0 到 5 个摄像头)
解决方案
问题不在于您要添加多个按钮,而在于您试图在多个 GtkButtons 中重用 GtkImage。与其尝试重复使用小部件,不如每次都创建一个新的。
换句话说,您当前的代码执行以下操作:
// somewhere earlier: self.imageIPCam = new Gtk.Image()
self.buttonIPCam1.add(self.imageIPCam)
// ...
self.buttonIPCam2.add(self.imageIPCam)
// ...
self.buttonIPCam3.add(self.imageIPCam)
要修复它,您可以这样做:
imageIPCam1 = new Gtk.Image()
self.buttonIPCam1.add(self.imageIPCam1)
// ...
imageIPCam2 = new Gtk.Image()
self.buttonIPCam2.add(self.imageIPCam2)
// ...
imageIPCam3 = new Gtk.Image()
self.buttonIPCam3.add(self.imageIPCam3)
推荐阅读
- python - 我不懂检索值的语法
- g1ant - OCRGoogle API 密钥不成功
- javascript - 删除使用 document.createElement 创建的元素
- c# - Linq 动态 where Func
- javascript - Typescript - 如何将部分类型分配给另一个对象的相同类型的属性?
- linux - 我想将最后一个命令输出过滤为持续“x”小时,它可以是 1 小时或 2 年等。我使用了所有 grep/sed/awk 但没有任何帮助
- laravel - 在 laravel cron 中迭代服务提供者
- python-3.x - 无法“激活”烧瓶的 venv 环境
- android - 我可以使用具有相同包名的 2 个不同的 firebase 项目吗?
- r - 通过 R 进行网页抓取