首页 > 解决方案 > 如何根据 tkinkter 菜单中的选定选项触发按钮?

问题描述

我有一个列表和 3 条路径。每条路径都指的是专门为该国家/地区运行的应用程序。

country = ['Spain', 'United Kingdom', 'Malaysia']

path_spain = r"c:\data\FF\Desktop\PythonFolder\spain_software.py"
path_uk = r"c:\data\FF\Desktop\PythonFolder\uk_software.py"
path_malaysia = r"c:\data\FF\Desktop\PythonFolder\malaysia_software.py"

Run button我创建的需要根据我在OptionMenu. 因此,如果我选择Malaysia我希望Run buttonpath_malaysia. 我正在努力解决这个问题。如果我单击例如,最好我也希望Run button更改为。Run application MalaysiaMalaysiaOptionMenu

这是我的代码:

import os
from tkinter import *
       
window = Tk()
window.title("Running Python Script") #Create window
window.geometry('550x300') #geo of the window

def run():
    os.system('python path_spain') 

#The run button (this button runs some other software)
run_button = Button(window, text="Run application.....", bg="blue", fg="white",command=run)
run_button.grid(column=0, row=2)

#These are the option menus
dd_country = StringVar(window)
dd_country.set(country [0]) #the first value
w = OptionMenu(window, dd_country, *country)
w.grid(row=0,column=1)

#These are the titles
l1 = Label(window,  text='Select Country', width=15 )  
l1.grid(row=0,column=0)

mainloop()

现在它只适用于西班牙......

标签: pythontkinterbuttontkinter.optionmenu

解决方案


import os
from tkinter import *

owner = ['Spain', 'United Kingdom', 'Malaysia']

path_spain = r"c:\data\FF\Desktop\PythonFolder\spain_software.py"
path_uk = r"c:\data\FF\Desktop\PythonFolder\uk_software.py"
path_malaysia = r"c:\data\FF\Desktop\PythonFolder\malaysia_software.py"

window = Tk()
window.title("Running Python Script")  # Create window
window.geometry('550x300')  # geo of the window


def run():
    if dd_owner.get() == "Spain":
        print("spain")
        # os.system('python path_spain')
    elif dd_owner.get() == "United Kingdom":
        os.system('python path_uk')

    elif dd_owner.get() == "Malaysia":
        os.system('python path_malaysia')


def update_button(_):
    run_button.config(text="Run application {}".format(dd_owner.get()))


# The run button (this button runs some other software)


# These are the option menus
dd_owner = StringVar(window)
dd_owner.set(owner[0])  # the first value
w = OptionMenu(window, dd_owner, *owner, command=update_button)
# w.config()
w.grid(row=0, column=1)

run_button = Button(window, text="Run application {}".format(dd_owner.get()), bg="blue", fg="white",command=run)
run_button.grid(column=0, row=2)

# These are the titles
l1 = Label(window, text='Select Owner', width=15)
l1.grid(row=0, column=0)

mainloop()

这将解决您的问题


推荐阅读