【问题标题】:Pass/Fail images in TkinterTkinter 中的通过/失败图像
【发布时间】:2019-11-18 23:59:04
【问题描述】:

我想在按下两个不同按钮时显示两个不同的图像“显示通过”按钮应该显示一个带有绿色和文本“通过”的图像(在新窗口中),而“显示失败”应该显示一个带有红色和文字“失败”的图像。然而,即使在创建从属窗口(对于通过/失败图像)期间,我执行撤回以隐藏它,当我运行程序时,它们同时显示图像并且按下“显示通过”或“显示失败”按钮没有任何影响。它遵循我的代码:

from tkinter import *

GUI_WIDTH = 500
GUI_HEIGHT = 350

resultShown = False

def showUUTResult(UUTresult, slave):
    global resultShown
    if (resultShown == 'True'):
        slave.withdraw()
    slave = Toplevel()
    slave.deiconify()
    slave.title("Res")
    canvas_width = 185
    canvas_height = 150
    canvas = Canvas(slave, width=canvas_width, height=canvas_height)
    canvas.grid(row=5, column=5, sticky=N)
    if UUTresult == 'PASS':
        img = PhotoImage(file="C:\PythonPrograms\Pass.png")
        print('Result is PASS')
    elif UUTresult == 'FAIL':
        img = PhotoImage(file="C:\PythonPrograms\Fail.png")
        print('Result is FAIL')
    else:
        print('Unknown UUT Result Type!')
    canvas.create_image(10, 10, anchor=NW, image=img)
    canvas.image = img
    resultShown = 'True'

master = Tk()
gui_resolution = str(GUI_WIDTH)+'x'+str(GUI_HEIGHT)
master.geometry(gui_resolution)
master.resizable(FALSE, FALSE)
master.title("PASS FAIL Trial")
slave = Toplevel()
slave.withdraw()

passTestButton = Button(master, text="Show Pass", command=showUUTResult('PASS', slave))
passTestButton.grid(column=1, row=0, pady=5, ipadx=12)
failTestButton = Button(master, text="Show Fail", command=showUUTResult('FAIL', slave))
failTestButton.grid(column=1, row=1, pady=5, ipadx=12)

master.mainloop()

【问题讨论】:

    标签: image tkinter


    【解决方案1】:

    问题在于创建按钮并为其分配命令的行。

    failTestButton = Button(master, text="Show Fail", command=showUUTResult('FAIL', slave))
    

    这就是说创建一个带有文本“显示失败”的按钮,并在传递一些参数时将命令设置为函数 showUUTResult 的结果。 showUUTResult 不返回任何内容,所以当您的程序运行时,窗口会立即打开,显示图像,但单击按钮什么也不做。

    你可以通过一个简单的添加来解决这个问题

    failTestButton = Button(master, text="Show Fail", command=lambda: showUUTResult('FAIL', slave))
    

    lambda 创建一个匿名函数,在按下按钮时调用该函数。

    这应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 2018-07-17
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      相关资源
      最近更新 更多