修改easygui库,实现字体,颜色,背景的改变

问题描述

在使用buttonbox时,发现文字显示太小,还需要加粗,而我是要用来作为显示释义的窗口,见上一帖(小E教你学英语)

而网上说的办法不适用于buttonbox,于是我去找起了源码buttonbox.py,我发现它是使用tkinter写的,之前听小甲鱼说过,这个也是一款gui的工具。

下面是我修改的其中一个地方(By WINTERSTAR)

# self.boxFont = tk_Font.Font(
        #     family='global_state.PROPORTIONAL_FONT_FAMILY',
        #     size=global_state.PROPORTIONAL_FONT_SIZE)

        # add By WINTERSTAR
        self.boxFont = tk_Font.Font(
            family='Microsoft YaHei',
            size=12,
            weight='bold')

        # self.boxFont = tk_Font.nametofont("TkFixedFont")

但是改了以后依旧不能用,记录python-tkinter包 Text控件中的更改文字颜色大小操作 在看过链接博客以后,发现是因为这个参数压根没传到后面,只是在一个函数里使用了。因此仿照博客的写法

同时我发现还能改字体 中文字体的英文名称(宋体 微软雅黑

在buttonbox.py里,发现self.create_msg_widget(msg)所调用的一个函数是对释义区域进行实现的代码:

# Methods to change content ---------------------------------------
    def set_msg(self, msg):
        self.messageArea.config(state=tk.NORMAL)
        self.messageArea.delete(1.0, tk.END)
        self.messageArea.insert(tk.END, msg)
        self.messageArea.config(state=tk.DISABLED)
        self.messageArea.config(font=self.boxFont) #By WINTERSTAR
        # Adjust msg height
        self.messageArea.update()
        numlines = self.get_num_lines(self.messageArea)
        self.set_msg_height(numlines)
        self.messageArea.update()

添加一行(By WINTERSTAR)以后,发现已经生效了。参考这篇博客,我修改了字体和大小。但是这个窗口的位置还有点不太好。

同样修改位置的代码如下:

 self.set_pos(global_state.window_position)

由于我不想修改全局的代码,所以我在下面加了这一行覆盖上面的代码即可(不见得是覆盖,所以上面代码最好别删)

self.set_pos("+10+0")

+10表示离屏幕左边10像素点,+0表示离屏幕上边0像素点

这时候发现这个窗口太长了,要是能宽一点就好了。

然后发现下面有一行

self.boxRoot.minsize(100, 200)

我修改以后,就可以实现窗口的变化,但是并不智能,窗口的内容很少也显示的窗口很大

所以,我就单独把buttonbox以及它相关的库拿出来,然后把上述还原,只为释义窗口做了一个修改。

当然同样也有设置最大尺寸

self.boxRoot.maxsize(1400,600) # add By WINTERSTAR

那么这个easygui默认设置是灰色的,怎么修改颜色呢?使用rgb设置豆沙绿可以采用下面的代码

豆沙绿

self.messageArea = tk.Text(
            self.boxRoot,
            width=self.width_in_chars,
            # state=tk.DISABLED, # comment By WINTERSTAR
            padx=(global_state.default_hpad_in_chars) *
            self.calc_character_width(),
            relief="flat",
			foreground='black', # add By WINTERSTAR
            # background=self.boxRoot.config()["background"][-1], # comment By WINTERSTAR
            background= "#%02x%02x%02x" % (128, 192, 200), # add By WINTERSTAR
            pady=global_state.default_hpad_in_chars *
            self.calc_character_width(),
            wrap=tk.WORD,
        )

另外,如果想让界面处于可编辑的状态,那么出来要注释上面的DISABLED,还需要下面的DISABLED代码

    def set_msg(self, msg):
        self.messageArea.config(state=tk.NORMAL)
        self.messageArea.delete(1.0, tk.END)
        self.messageArea.insert(tk.END, msg)
        # self.messageArea.config(state=tk.DISABLED) # comment By WINTERSTAR
        self.messageArea.config(font=self.boxFont) # add By WINTERSTAR
        # Adjust msg height
        self.messageArea.update()
        numlines = self.get_num_lines(self.messageArea)
        self.set_msg_height(numlines)
        self.messageArea.update()

那么配什么文字比较好呢? 可以看看这个人使用的一些文字颜色搭配