本人毕设期间,使用的一款简单上手的GUI框架easygui,在高度个性化时出现问题,例如按钮框个性化定制等.那么我是如何解决这些问题的呢?不多bb,直接上图:
如图,可以看到:在message领域,文字变为黑体且为红色;在images领域,图片多了边框和边框的颜色,页内边距pad发生变化; 最后,button领域字体、外边框、背景颜色等均已个性化。
1.首先,我们需要了解easygui是基于tkinter的GUI框架,那么针对这些格式的个性化,最终是定位到对tkinter底层代码的正确修改。
2.其次,我们需要了解easygui的基本代码逻辑,依照笔者的理解(没有GUI设计的基础),先是有布局框架Frame,再有诸如图片、按钮、文本等实例化操作,本着先有框架布局再有各种实例标签的原则,那么我们就可以针对性的个性化!
3.通过上述铺垫,我们可以进行个性化操作了。第一步,进入对象源码,以button_box为例:
a.首先我们查看其类的定义,找到初始类GUItk,如图:
发现它含有类属性 boxFont,其为根窗口root的文字定义。
此处对其修改,发现message区域首先发生改变,原因是类方法中set_msg()对其有引用。注意:修改golobal_state区域字体格式并不能影响全局,因为设计者并没有在各个标签中都使用到,导致其他未使用的部分字体仍然是默认字体。
b.其次,查看类方法定义如图:
此处,可以看到针对根窗口root,信息栏message,图片栏images,按钮框button都有Frame的定义!
<1>.那么,就有了个性化的第一步,修改根窗口root。进入该方法下,可以看见一些属性的定义,如图:
首先,我们想修改根窗口的背景色,发现可以定义其为
self.boxRoot.config(bg='Moccasin')
于是,背景色得以修改。接着有窗口位置、最大窗口、最小窗口、和窗口弹出的最高优先权定义、窗口图标元素等。
<2>.再者,我们尝试修改button中内容的背景色,字体样式等,那么我们要去实现button的方法中去,而不是定义button的布局方法。经过确认,发现定义这些格式的代码如下:
回到开始,如果需要个性化定义,尤其是增加属性,需要了解tkinter中定义的类模块中是否支持。
本图中,发现Button类中可以个性化添加字体、字体的颜色fg等属性。同时,在grid()方法中,发现了可以设置外边距padx、pady和内边距ipad_x、ipad_y等属性值。
<3>.在了解到grid()方法主要定义页面中元素的布局后,我们可以尝试改变图像、按钮的布局了。首先是按钮布局,如图:
可以发现,定义的button中,字体背景色、外边框宽度在尝试定义后生效。
然后就是图片的布局,如上图,你可以猜测我定义了哪些新的内容。
<4>.最后,我们做最后一步,寻找message中字体的设置,如图:
文章来源:https://www.toymoban.com/news/detail-416605.html
你甚至可以尝试修改你想要的、它支持的任何属性达到个性化操作。文章来源地址https://www.toymoban.com/news/detail-416605.html
总结:理解是第一步,实践是第二步。
后续会跟进基于PySimpleGUI的个性化实例。
到了这里,关于easygui修改字体、背景、布局、颜色等个性化样式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!