プログラム内のいくつかのオブジェクトにTixExFileSelectDialog
関連付けられているがあります。Entry
選択したファイルが、ダイアログが使用されているダイアログのテキストと一致するように、ダイアログが動的に構成されますEntry
。ただし、ダイアログを初めて開いたときは、どちらを使用したかに関係なく、すでにデフォルト値が設定されているEntry
場合でも、パターン文字列のみが表示されます。Entry
ただし、ダイアログをキャンセルしてから再度開くと、適切な文字列が表示されます。これは、コンボボックスselection
とvalue
オプション(一方、他方、および両方)の任意の組み合わせを設定した場合、およびコンボボックスのvariable
オプションをに設定した場合に発生しますStringVar
。TixComboBox
sの機能に欠けているものはありますか?
私が現在使用しているコード(投稿用の再フォーマットなどを含む):
from tkinter.tix import *
opts = {'path': 'C:\\'}
class ImportGUI(Frame):
def _setfsd(self, directory='', pattern='*.xls', variable='', selection=None):
"Reconfigures the ExFileSelectDialog to enable reusability."
self.fsd.fsbox.config(directory=directory or opts['path'], # can't use opts['path'] as a default argument, because it could change.
pattern=pattern)
self.fsd.fsbox.file['variable'] = variable
if not variable:
self.fsd.fsbox.file['value'] = selection or pattern # Defaults to the pattern, which is the behavior of a fresh ExFileSelectionBox.
elif selection is not None: # variable exists, but setting selection manually as well
self.fsd.fsbox.file['value'] = selection
def _selectdatafile(self):
self._setfsd(selection='apple1.xls')
self.fsd.popup()
def _selectcodefile(self):
self._setfsd(selection='apple2.xls')
self.fsd.popup()
def createWidgets(self):
self.fsd = ExFileSelectDialog(self.master) # a top-level widget, so giving it the default root as master
self.dfrow = Frame(self)
self.cfrow = Frame(self)
self.dfentry = Entry(self.dfrow)
self.dfentry.pack(side='left')
self.cfentry = Entry(self.cfrow)
self.cfentry.pack(side='left')
self.dfbtn = Button(self.dfrow, text='...', command=self._selectdatafile)
self.dfbtn.pack(side='left')
self.cfbtn = Button(self.cfrow, text='...', command=self._selectcodefile)
self.cfbtn.pack(side='left')
self.dfrow.pack()
self.cfrow.pack()
self.pack()
def __init__(self, master=None):
Frame.__init__(self, master)
self.master.tk.eval('package require Tix')
self.createWidgets()
if __name__ == '__main__': # for testing
gui = ImportGUI()
gui.mainloop()