Ttkbootstrap主题的颜色选择组件ColorChooserDialog,选中颜色后报错,打印result结果是None
   1
ttkbootstrap主题的颜色选择组件 ColorChooserDialog,选中颜色后报错,打印result结果是None 报错原因 经过排查,发现在点击确定后,这老外居然是根据按钮上的文字来判断是否确定或取消,真是无了个语。 这在英文条件下没问题,中文下 就会出错了 1 2 3 4 5 6 7 8 9 10 def on_button_press(self, button): if button.cget('text') == 'OK': values = self.colorchooser.get_variables() self._result = ColorChoice( rgb=(values.r, values.g, values.b), hsl=(values.h, values.s, values.l), hex=values.hex ) self._toplevel.destroy() self._toplevel.destroy() 解决方法 通过查看源码,选取的颜色是通过选择器内colorchooser组件获取的,直接调用colorchooser的方法即可获取到颜色。 1 2 3 cd = ColorChooserDialog() cd.show() result = cd.colorchooser.get_variables()
布局助手代码架构说明
   1
在之前的UI布局代码中,每修改一次布局,布局代码就被重置了,在布局代码中添加的部分又得重新设置了,需求总是变化,界面调整次数多了,每次重新设置还是挺让人头痛。为了解决这个麻烦问题,于是我重新设计了代码架构。 UI与逻辑分开 参照了后端开发中常用的 MVC 架构,我将代码重新分为了四个部分,程序入口、UI、窗口控制器、服务。 这样每一层的变化都不会影响下一层,如果UI布局发生了变化,只需替换UI文件即可。 程序入口 程序入口代码很简单,主要导入UI、控制器,然后展示窗口。示例如下 1 2 3 4 5 6 7 8 9 10 11 12 13 # main.py # 导入布局文件 from ui import Win as MainWin # 导入窗口控制器 from control import Controller as MainUIController # 将窗口控制器 传递给UI app = MainWin(MainUIController()) if __name__ == "__main__": # 启动 app.mainloop() UI层 UI层则是从布局助手下载的py文件。在新架构中,这个文件就不要修改了,在程序入库导入,让后绑定相应的控制器。 窗口控制器 在窗口控制器,主要操作界面上的事件处理,以及UI层组件的初始化赋值等操作。 服务层 如果程序比较简单,业务完全可以在控制器中就能完成。 在此层主要是业务逻辑处理,不要在这里操作UI,涉及到UI层的操作,由控制器来协调处理,在控制层中比较复杂的逻辑,抽象提取出来。 推荐方式 比较简单的程序,建议采用以下方式 1 2 3 |-- control.py |-- main.py |-- ui.py 多窗口的程序 |-- controller | `-- control.
站长微信
请备注来意
二维码