pythonnetパッケージでPython 3.4で.NetのSaveFileDialogクラスを使用していくつかの問題があります。上に、その問題を示すコードのサンプルが表示されます。ボタンクリックのイベントが発生し、SaveFileDialogが "dialog.ShowDialog()"で表示され、アプリケーションがフリーズして何も起こらなくなるまで、コード自体はかなりうまく動作します。 IronPythonインタプリタで同じコードをテストしたところ、正常に動作しました。私はすでにいくつかの答えのためのWebを検索するが、あなたがこの問題で説明するようにSTAスレッドのアパートメント状態を設定する必要があるという問題Pythonnetで.NetのSaveFileDialogを使用することはできません
import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")
from System.Windows.Forms import Form, Application, Button, SaveFileDialog
from System.Drawing import Point
class TestForm(Form):
def __init__(self):
self.button = Button()
self.addButton()
def addButton(self):
self.button.Location = Point(50,50)
self.button.Text = "Save s.th"
self.Controls.Add(self.button)
self.button.Click += self.buttonClick
def buttonClick(self, sender, event):
dialog = SaveFileDialog()
dialog.FileName = "test one"
dialog.Title = "Test One"
print("so far so good")
dialog.ShowDialog()
print("Never reaches this point")
Application.Run(TestForm())
[OK]をクリックして問題を解決しました。私は上記の "WinPython"(参照)に付属のスパイダーと同じコードをランチしようとしました。しかし、 "pyinstaller"でコンパイルしようとすると、エラーが再び表示されます。それでなぜスパイダーでしか動かないのですか? –
下記の私の答えを参照してください - 私はテストし、それは素晴らしい動作します! – denfromufa