我需要能夠從 scripter.py 中呼叫腳本,方法是從下拉串列中選擇它并單擊一個按鈕來運行它并在同一視窗中獲得輸出。所以我有兩個主要問題,第一個是如何從另一個 py 頁面呼叫 netmiko ConnectHandler 并僅使用按鈕執行它選擇問題是當我運行 main.py 時它會在 tkinter 打開后自動執行 scripter.py
第二個是不知道如何將輸出從 scripter.py 匯出到 main.py 并在 tkinter 中顯示
所以我的 (scripter.py) 看起來像
from netmiko import ConnectHandler
fortinet_device = {
'device_type': 'fortinet',
'ip': 'X.X.X.X',
'username': 'Username',
'password': 'Password'
}
net_connect = ConnectHandler(**fortinet_device)
cmd = ['get sys arp']
output = ''
for command in cmd:
output = net_connect.send_command(command)
print(output)
我的主頁是 (main.py)
from tkinter import *
from scripter import cmd
master = Tk(className="Test")
master.geometry("300x300")
def func(selected_item):
print(repr(selected_item.strip()))
#************main_menu menu***********
main_menu = StringVar(master)
#***********dependent_menu menu*********
dependent_menu = StringVar(master)
#************main_menu values**************
show_arp = cmd
show_add = 'show firewall address'
#***********dependent_menu values************
grep = '|grep'
# main_menu default value
main_menu.set(show_arp)
# dependent_menu default value
dependent_menu.set(grep)
#************main_menu**************
w = OptionMenu(master, main_menu, show_arp, show_add, "three")
w.pack(side=TOP)
#**************dependent_menu***************
s = OptionMenu(master, dependent_menu, grep)
s.pack(side=LEFT)
mainloop()
uj5u.com熱心網友回復:
首先,您需要將代碼放入scripter.py函式中,例如:
from netmiko import ConnectHandler
def get_sys_arp():
fortinet_device = {
'device_type': 'fortinet',
'ip': 'X.X.X.X',
'username': 'username',
'password': 'password'
}
net_connect = ConnectHandler(**fortinet_device)
cmd = ['get sys arp']
output = ''
for command in cmd:
output = net_connect.send_command(command)
print(output)
然后在里面匯入這個函式main.py,當對應的itemOptionMenu被選中時執行:
from tkinter import *
from scripter import get_sys_arp # import the function from scripter
master = Tk(className="Test")
master.geometry("300x300")
def func(selected_item):
print(repr(selected_item.strip()))
if selected_item == 'show arp':
get_sys_arp() # execute the function
#************main_menu menu***********
main_menu = StringVar(master)
#***********dependent_menu menu*********
dependent_menu = StringVar(master)
#************main_menu values**************
show_arp = 'show arp' # item text for running get_sys_arp()
show_add = 'show firewall address'
#***********dependent_menu values************
grep = '|grep'
# main_menu default value
main_menu.set(show_arp)
# dependent_menu default value
dependent_menu.set(grep)
#************main_menu**************
# add command=func to execute func() when a item is selected
w = OptionMenu(master, main_menu, show_arp, show_add, "three", command=func)
w.pack(side=TOP)
#**************dependent_menu***************
s = OptionMenu(master, dependent_menu, grep)
s.pack(side=LEFT)
mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357578.html
