私はIronPythonを初めて使用し、固定フィールドファイルを区切りファイルに変換するWindowsフォームを使用して単純なアプリケーションを作成しようとしています。
3つのボタンを持つフォームを作成しました。
1つ目は、変換するファイルを選択することです。2つ目は、最初のファイルのレイアウトでファイルを選択することです。3つ目は、上記の2つのファイルのファイル名をファイルを変換するPython関数に送信するための[送信]ボタンです。
最初の2つのボタンは正常に機能します。私の問題は、ファイル名を「button_submitPressed」関数に渡すことです。FILENAMEとLAYOUTのグローバル変数を作成しようとしました(「HelloWorldForm」クラスの内外で試しましたが、どちらも機能していません)。
ボタンイベントで収集した変数を別の関数に渡すにはどうすればよいですか?
これを実行すると、送信ボタンをクリックすると(最初の2つをクリックし、ファイル名とレイアウトを選択した後)、次のエラーが発生します。
IronPython.Runtime.UnboundNameException: global name 'FILENAME' is not defined
ありがとう。
class HelloWorldForm(Form):
FILENAME = ''
LAYOUT = ''
def __init__(self):
self.Text = 'ff2delim'
self.label = Label()
self.label.Text = "Convert fixed legnth file to delimited"
self.label.Location = Point(50, 50)
self.label.Height = 30
self.label.Width = 200
self.count = 0
button = Button()
button.Text = "File name"
button.Location = Point(50, 100)
button.Click += self.buttonPressed
button2 = Button()
button2.Text = "Layout"
button2.Location = Point(50, 130)
button2.Click += self.button2Pressed
button_submit = Button()
button_submit.Text = "Convert"
button_submit.Location = Point(50, 190)
button_submit.Click += self.button_submitPressed
self.Controls.Add(self.label)
self.Controls.Add(button)
self.Controls.Add(button2)
self.Controls.Add(button_submit)
def buttonPressed(self, sender, args):
dialogf = OpenFileDialog()
if dialogf.ShowDialog() == DialogResult.OK:
FILENAME = dialogf.FileName
print "FILENAME: " + FILENAME
self.label_filename = Label()
self.label_filename.Text = FILENAME
self.label_filename.Location = Point(140, 105)
self.label_filename.Height = 30
self.label_filename.Width = 200
self.Controls.Add(self.label_filename)
else:
print "No file selected"
def button2Pressed(self, sender, args):
dialogl = OpenFileDialog()
if dialogl.ShowDialog() == DialogResult.OK:
LAYOUT = dialogl.FileName
print "LAYOUT: " + LAYOUT
self.label_layout = Label()
self.label_layout.Text = LAYOUT
self.label_layout.Location = Point(140, 135)
self.label_layout.Height = 30
self.label_layout.Width = 200
self.Controls.Add(self.label_layout)
else:
print "No file selected"
def button_submitPressed(self, sender, args):
convert(FILENAME,LAYOUT)