python tkinter 表格 怎么设置字体大小_Tkinter动态字体大小更改
编辑:想出了另一种方法,我更喜欢,所以把这个放在上面,下面的旧的作为参考。在新版本:代码需要跟踪标记索引的开始和结束位置。它还将为每个字体大小提供一个唯一的标记名。我认为一个好的标记名可以与用于标记配置的字体和大小相同。在当选择一个新的字体大小时,写入的文本将得到一个带有起始和结束索引的标记,并配置了适当的字体大小。然后它将设置新的字体大小,将其设置为文本小部件并更新变量。除非再次更改字体大小,否
编辑:
想出了另一种方法,我更喜欢,所以把这个放在上面,下面的旧的作为参考。在
新版本:
代码需要跟踪标记索引的开始和结束位置。它还将为每个字体大小提供一个唯一的标记名。我认为一个好的标记名可以与用于标记配置的字体和大小相同。在
当选择一个新的字体大小时,写入的文本将得到一个带有起始和结束索引的标记,并配置了适当的字体大小。然后它将设置新的字体大小,将其设置为文本小部件并更新变量。除非再次更改字体大小,否则不会添加标记。但是由于文本小部件具有当前选择的字体大小,因此它将以正确的大小显示。在import sys
import tkinter as tk
from tkinter import ttk
def main():
def current_index():
# Return current cursor position in the text widget
return textentry.index(tk.INSERT)
def fontSizeFunc(*new_var):
# Set the tag for the text that has been written
textentry.tag_add(current_tag.get(), start_index.get(), current_index())
textentry.tag_config(current_tag.get(), font=current_tag.get())
# Sets new Font Size, store start_index position for new tag,
# create a new tag that has theFont as tag name
theFont = "Arial %d" % new_var
textentry.configure(font=theFont)
start_index.set(current_index())
current_tag.set(theFont)
# Simple Tkinter setup for testing purpose
root = tk.Tk()
sizesList = [8, 10, 12, 13, 14, 16, 18, 22, 26, 32, 40]
var = tk.IntVar()
var.set(13)
frame = ttk.Frame(root)
frame.grid(column=0, row=0)
fontsizeDropDown = tk.OptionMenu(frame, var, *sizesList, command=fontSizeFunc)
fontsizeDropDown.grid(row=0, column=1, sticky=tk.N)
textentry = tk.Text(frame)
textentry.grid(row=1, column=0, columnspan=2)
# Initialize start_index and current_tag
start_index = tk.StringVar()
current_tag = tk.StringVar()
start_index.set(current_index())
current_tag.set("Arial %d" % var.get())
root.mainloop()
if __name__ == '__main__':
sys.exit(main())
如果要在文本小部件中存储文本,请记住在退出/存储之前通过调用fontSizeFunc()来设置标记。否则最后输入的文本将没有标记。在
旧版本:
如果你想改变的话,我会改变你的想法。每次使用选项菜单更改字体大小时,都会创建一个新标记。在
在下面我的示例代码中,当文本小部件处于焦点时,它检查keyrease。当您键入时,当前标记索引将展开,当您选择新的字体大小时,它将创建一个新的标记。在我能用的地方用你的代码,只是在不上课的情况下调整它。在
^{pr2}$
希望你能用这个来建立你自己更好的版本:)
更多推荐
所有评论(0)