首页 > 解决方案 > 如何在按钮前面使用 tkinter-python 添加文本框,当我单击它们时,结果应显示在添加的文本框中

问题描述

我使用 Tkinter-python 在 python 中开发了一个简单的应用程序,其中选择图像导航任何带有图像的文件夹。方法 1 和 2 按钮具有两种不同的功能,用于分析从文件夹/路径中选择的图像。我想在方法 1 和 2 前面添加两个文本框,这样当我单击方法 1 时,结果应该打印在方法 1 之后添加的文本框 1 上,同样在第二个按钮上。如果可能,将确认添加从“选择图像”按钮上的路径中选择图像的功能。假设方法 1 是将图像从 RGB 转换为灰度的函数,方法 2 是将 RGB 图像二值化的函数。以下是一些用于构建应用程序的代码。

from tkinter import *
from PIL import Image,ImageTk
from tkinter import filedialog

class application(Tk):
    def __init__(self,parent):
        Tk.__init__(self,parent)
        self.parent = parent
        self.minsize(width=500,height=500)
        self.initialize()
    
    def initialize(self):
        self.grid_columnconfigure(0,weight=1)
        self.grid_columnconfigure(1,weight=1)
    
    
    #Button widgets
    ###########################################################################################
      self.button1 = Button(self,text='Button1',width=10,height=2)
      self.button1.grid(column=0,row=0,sticky='W',pady=5)
    
      self.button2 = Button(self,text='Result1',width=10,height=2)
      self.button2.grid(column=1,row=3,sticky='E',pady=5)
    
      self.button3 = Button(self,text='Result2',width=10,height=2)
      self.button3.grid(column=1,row=4,sticky='E',pady=5)
    
      self.button4 = Button(self,text='Exit',width=10,height=2,command=self.destroy)
      self.button4.grid(column=0,row=3,sticky='W',pady=5)
    
      #Text widget for inserting results
    ############################################################################################
      self.text1 = Text(self,height=20,width=60,state=NORMAL)
      self.text1.grid(column=1,row=2,sticky='W',padx=5)
    
      #Label widget
    ############################################################################################
      self.label1 = Label(self,text="Window",width=10,height=2,anchor="w")
      self.label1.grid(column=1,row=0,sticky='E',padx=5)
    
if __name__ == "__main__":
    app = application(None)
    #font.nametofont('TkDefaultFont').configure(size=10)
    app.title("John's work")
    app.mainloop()

上面代码生成的应用程序通过此图显示 在此处输入图像描述

预期如下 在此处输入图像描述

标签: pythonimagefunctiontkinterbutton

解决方案


tkinter有一个Toplevel你可能会觉得有用的类。它很像一个Tk对象,只是它可以有一个作为父对象。很多人使用Toplevel弹出窗口之类的东西。在您的情况下,可以定义一个函数来创建一个显示文本的弹出窗口,如下例所示:

from tkinter import *

def create_popup(parent, message):
    window = Toplevel(parent)
    label = Label(window, text = message)
    label.pack()
    button = Button(window, text = "Ok", command = window.destroy)
    button.pack()
    window.mainloop()

root = Tk()
temp = lambda: create_popup(root, "Hello")
button = Button(root, text = "Click me", command = temp)
button.pack()
root.mainloop()

如果您事先使用 确定主窗口的位置和大小Tk.geometry(),您可以轻松地在您提到的按钮旁边制作弹出窗口。这意味着可以调整上面的代码片段:

from tkinter import *

def create_popup(parent, message, configuration):
    window = Toplevel()
    window.geometry(configuration)
    label = Label(window, text = message)
    label.pack()
    button = Button(window, text = "Ok", command = window.destroy)
    button.pack()
    window.mainloop()

root = Tk()
root.geometry("200x200+100+100")
temp = lambda: create_popup(root, "Hello", "50x50+350+100")
button = Button(root, text = "Click me", command = temp)
button.pack()
root.mainloop()

希望这有帮助!


推荐阅读