黎明丿晓小 发表于 2021-10-8 22:37:21

tkinter:画布上未能成功添加文本的相关问题

本帖最后由 黎明丿晓小 于 2021-10-9 15:19 编辑

直接上问题:
      1.现在需要在画布上添加一些文本,或是显示文本的文本框,置于画布底端,但现在创建完成后并未显示文本,附上代码,请各位大佬指明方向。
      2.添加列表框Listbox不能显示在画布右侧,而是紧跟左侧列表框,如何将其放置到画布右侧。
      3.例如help_text文本未能正常显示。

      预期效果图见附件,另附代码
from os import listdir
from tkinter import *
from tkinter import filedialog
from PIL import Image,ImageTk
from tkinter import messagebox

files = {}
img_open = None
img = None

help_text="""
1.打开文件

2.选择打开文件或文件夹

3.单击显示图片
"""

root = Tk()
root.title("叶片计数")
root.geometry("600x600")

#-------------------命令----------------------#
def open_file():
    file_paths = filedialog.askopenfilenames()
    list1.delete(0,END)
    files.clear()

    file_list = []
    for file_path in file_paths:
      name = file_path.split("/")[-1]
      file_list.append(name)
      files = file_path
      list1.insert(END,name)

def open_dir():
    dir_path = filedialog.askdirectory()
    list1.delete(0,END)
    files.clear()

    file_names = []
    target_file_name = ["jpg","png","gif"]
    for name in listdir(dir_path):
      if name.split(".")[-1].lower() in target_file_name:
            file_names.append(name)
            files = dir_path+"/"+name
            list1.insert(END,name)

def show_view(event):
    global img_open
    global img
    try:
      back.delete(ALL)
      get_file = list1.get(ACTIVE)
      file_path = files
    except:
      return
    back_width = back.winfo_width()
    back_height = back.winfo_height()
    img_open = Image.open(file_path)
    img_open.thumbnail((back_width,back_height),Image.ANTIALIAS)
    img = ImageTk.PhotoImage(img_open)
    back.create_image(back_width / 2, back_height / 2,anchor=CENTER,image=img)

def refresh(event):
    root_width = root.winfo_width()
    root_height = root.winfo_height()

    back.config(width=root_width - 200, height=root_height - 10)
    show_view(1)
def train():
    pop1 = Toplevel()
    pop1.title("测试")
    pop1.geometry("200x200")


    Label(pop1,text="batch").grid(row=0,sticky=E)
    Label(pop1,text="learning_rate").grid(row=1,sticky=E)
    Label(pop1,text="width").grid(row=2, sticky=E)
    Label(pop1, text="height").grid(row=3, sticky=E)
    Label(pop1, text="decay").grid(row=4, sticky=E)
    Label(pop1, text="steps").grid(row=5, sticky=E)
    Label(pop1, text="max_batches").grid(row=6, sticky=E)

    Entry(pop1).grid(row=0,column=1)
    Entry(pop1).grid(row=1,column=1)
    Entry(pop1).grid(row=2, column=1)
    Entry(pop1).grid(row=3, column=1)
    Entry(pop1).grid(row=4, column=1)
    Entry(pop1).grid(row=5, column=1)
    Entry(pop1).grid(row=6, column=1)

    def over():
      messagebox.showinfo("训练", "训练完毕")


    Button(pop1,text="开始训练",command=over).grid(row=7,columnspan=4,pady=5)
    pop1.mainloop()
def test():
    pop2 = Toplevel()
    pop2.title("测试")
    pop2.geometry("200x200")

    frame = LabelFrame(pop2,text="      测试结果      ",padx=5,pady=5)
    frame.pack()

    Label(frame, text="mAP:60.8%",justify=LEFT).grid(row=0,column=0)
    Label(frame, text="Precision:81.3%",justify=LEFT).grid(row=1, column=0)
    Label(frame, text="Recall:76.1%",justify=LEFT).grid(row=2, column=0)
    Label(frame, text="F1-score:78.6%",justify=LEFT).grid(row=3, column=0)
    pop2.mainloop()
def val():
    pop3 = Toplevel()
    pop3.title("检测")
    pop3.geometry("200x200")

    frame = LabelFrame(pop3, text="      检测结果      ", padx=5, pady=5)
    frame.pack()


    pop3.mainloop()
#-------------------菜单栏--------------------#
menubar = Menu(root)
file_menu = Menu(menubar,tearoff=0)
file_menu.add_command(label="打开文件",command=open_file)
file_menu.add_command(label="打开文件夹",command=open_dir)
file_menu.add_separator()
file_menu.add_command(label="退出",command=root.quit)

menubar.add_cascade(label="文件",menu=file_menu)

menubar.add_command(label="训练",command=train)

#test_menu = Menu(menubar,tearoff=0)
#menubar.add_cascade(label="测试",menu=test_menu)
menubar.add_command(label="测试",command=test)

menubar.add_command(label="检测",command=val)
#detect_menu = Menu(menubar,tearoff=0)
#menubar.add_cascade(label="检测",menu=detect_menu)

root.config(menu=menubar)
#------------------画布-----------------------#
back = Canvas(root,bg="white",width=400,height=600)
back.pack(side=RIGHT,fill=BOTH,expand=True)
back.create_text(200,300,anchor=CENTER,text=help_text)


#------------------滚动条---------------------#
sb = Scrollbar(root)
sb.pack(side=RIGHT,anchor=CENTER,fill=Y)
#-------------------列表框--------------------#
list1 = Listbox(root,yscrollcommand=sb.set)
list1.pack(side=LEFT,fill=Y)
list1.bind("<Button-1>",show_view)
sb.config(command=list1.yview)


root.bind("<Configure>",refresh)
root.mainloop()

黎明丿晓小 发表于 2021-10-9 15:20:45

顶{:5_105:}

AdiosSpike 发表于 2021-10-10 21:04:39

蹭个鱼币,顺便帮顶一下

心驰神往 发表于 2021-10-11 11:50:26

1molHF 发表于 2021-10-11 12:41:31

tianlai7266 发表于 2021-10-11 19:33:30

{:10_254:}

帅昊昊昊 发表于 2021-10-11 22:48:23

Miss执 发表于 2021-10-15 11:53:28

{:10_254:}

tianlai7266 发表于 2021-10-15 12:23:44

{:10_254:}

阿萨德按时 发表于 2021-10-15 14:53:59

{:10_277:}

sunyt 发表于 2021-10-15 19:14:16

{:7_138:}

hornwong 发表于 2021-10-15 20:56:20

{:5_108:}

LIUBOLIUHAO 发表于 2021-10-15 23:02:29

   q{:10_269:}

LIUBOLIUHAO 发表于 2021-10-15 23:03:32

{:10_279:}

LIUBOLIUHAO 发表于 2021-10-15 23:04:03

页: [1]
查看完整版本: tkinter:画布上未能成功添加文本的相关问题