Испытывать некоторые проблемы с использованием TKinter в python. В медленном построении, что будет простой программой с одним мастер-окном и 4 вкладками (ноутбуками), я столкнулся с трудностями в определении того, как передать имя файла для работы, которая ему нужна.Передача имени файла с помощью кнопки Tkinter на другую функцию
У меня есть одна кнопка, которая открывает диалоговое окно файла и позволяет пользователю выбрать файл и (надеюсь) получить имя файла. У меня есть еще одна настройка кнопки, которая (надеюсь) вызовет процесс, с именем выбранного файла, переданным в качестве аргумента методу, вызванному в команде. Прямо сейчас я могу запускать диалог открытого файла и печатать имя файла на консоли, но я не могу понять, как передать это имя файла команде delineate (которая в конечном итоге вызовет другой скрипт с именем файла в качестве входных данных для этого скрипт). Я настроил его так, чтобы при нажатии кнопки «Delineate» в окне отображается «Delineating ....». Моя цель состоит в том, чтобы иметь возможность отображать «Delineing X», где X - это имя открытого файла, и передать это имя на другой скрипт. Если я могу получить его до точки, где «разграничения X» корректно отображаются, я это означает, что имя файл было передано, и я думаю, что я могу сделать все остальное ...
Вот код:
from Tkinter import *
import ttk
import tkFileDialog
import tkMessageBox
import Tkconstants
class Unified_Tool(ttk.Frame):
# =============================================================================
# Main setup options
def __init__(self, isapp=True, name='unified_tool'):
ttk.Frame.__init__(self, name=name)
self.master.title("Unified Tool")
self.pack(expand=Y, fill=BOTH)
self.isapp = isapp
self._create_widgets()
file_name = StringVar()
def _create_widgets(self):
self._create_panels()
def _create_panels(self):
panel = Frame(self, name='panel')
panel.pack(side=TOP, fill=BOTH, expand=Y)
# create the notebook
nb = ttk.Notebook(panel, name='notebook_panel')
nb.pack(fill=BOTH, expand=Y, padx=2, pady=3)
self._create_ca_del_tab(nb)
#self._create_traversal_tab(nb)
#self._create_tot_tab(nb)
#self._create_zcc_tab(nb)
# =============================================================================
# Delineation tab
def load_file(self):
file_name = tkFileDialog.askopenfilename(filetypes=([('All files', '*.*'),
('Text files', '*.txt'),
('CSV files', '*.csv')]))
print file_name
# =============================================================================
# Delineation tab
def _create_ca_del_tab(self, nb):
# variable to store the filename
del_filename = StringVar()
# frame to hold content
frame = ttk.Frame(nb, name='ca_delineation')
# widgets to be displayed on 'Description' tab
msg = ["For delineating the catchment area of a point or collection of points. In "
"the file selection box to the left, select the input file containing the points "
"for catchment area delineation."]
lbl_intro = ttk.Label(frame, wraplength='4i', justify=LEFT, anchor=N,
text=''.join(msg))
# button for selecting the input file
btn_del_select_file = ttk.Button(frame, text="Browse", command=self.load_file, width=10)
# button for triggering the task
btn_del = ttk.Button(frame, text='Delineate!', underline=0,
command=lambda v=del_filename: self._delineate(del_filename))
# label that displays the input file name
lbl_del = ttk.Label(frame, textvariable=del_filename, name='delineate')
# position and set resize behaviour
lbl_intro.grid(row=0, column=0, columnspan=2, sticky='new', pady=5)
lbl_del.grid(row=1, column=1, pady=(2,4))
btn_del_select_file.grid(row=1, column=0, pady=(2,4))
btn_del.grid(row=2, column=0, pady=(2,4))
frame.rowconfigure(1, weight=1)
frame.columnconfigure((0,1), weight=1, uniform=1)
# add to notebook (underline = index for short-cut character)
nb.add(frame, text='CA Delineation', underline=0, padding=2)
def _delineate(self, v):
v.set('Delineating....')
self.update()
Пожалуйста, измените метод 'class'. проверьте этот https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwj6xeDvpKvKAhXMthQKHVbyCwgQFggbMAA&url=http%3A%2F%2Fwww.nmt.edu%2Ftcc % 2Fhelp% 2Fpubs% 2Ftkinter% 2Ftkinter.pdf & usg = AFQjCNF80gkqF-dwc8-J5M-SnvJsjGFhKQ & sig2 = 6uY2nRD97KpYwTVZHeYv-A Почему вы пытаетесь усложнить ситуацию? Система контроля Nuke? – dsgdfg
Я строю окно с четырьмя вкладками - теперь работаю только на первой вкладке. Кажется ли это сложным для США, который будет иметь четыре разных вкладки, все с их кнопками/ярлыками/действиями? – traggatmot