前提・実現したいこと
初心者です。python3で、wxFormBuilderを使いGUIを作りました。
ボタンでフォルダの選択を選択した後、そのパスをGUI上で変更したいのです。
wxFormBuilderにて、「folder1.py」と「Folder1folder1Frame1.py」を作り、
ネット上の記事を参考に、後者に更新の記述をしましたが、動作しませんでした。
エラーコード
python
1AttributeError: 'NoneType' object has no attribute '_root'
以下がsorceです。
「folder1.py」
python
1 2# -*- coding: utf-8 -*- 3 4import wx 5import wx.xrc 6 7########################################################################### 8## Class folder1Frame1 9########################################################################### 10 11class folder1Frame1 ( wx.Frame ): 12 13 def __init__( self, parent ): 14 wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 412,152 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL ) 15 16 self.SetSizeHints( wx.DefaultSize, wx.DefaultSize ) 17 18 bSizer1 = wx.BoxSizer( wx.VERTICAL ) 19 20 self.folder1_pass = wx.StaticText( self, wx.ID_ANY, u"folder1_path", wx.DefaultPosition, wx.DefaultSize, 0 ) 21 self.folder1_pass.Wrap( -1 ) 22 23 bSizer1.Add( self.folder1_pass, 0, wx.ALL, 5 ) 24 25 self.folder1_select_button = wx.Button( self, wx.ID_ANY, u"フォルダを選択", wx.DefaultPosition, wx.DefaultSize, 0 ) 26 bSizer1.Add( self.folder1_select_button, 0, wx.ALL, 5 ) 27 28 29 self.SetSizer( bSizer1 ) 30 self.Layout() 31 32 self.Centre( wx.BOTH ) 33 34 # Connect Events 35 self.folder1_select_button.Bind( wx.EVT_BUTTON, self.folder1_select_buttonOnButtonClick ) 36 37 def __del__( self ): 38 pass 39 40 41 # Virtual event handlers, overide them in your derived class 42 def folder1_select_buttonOnButtonClick( self, event ): 43 event.Skip() 44
「Folder1folder1Frame1.py」
python
1"""Subclass of folder1Frame1, which is generated by wxFormBuilder.""" 2 3import wx 4import folder1 5import tkinter 6from tkinter import messagebox 7from tkinter import filedialog 8from tkinter import ttk 9from folder1 import folder1Frame1 10 11# Implementing folder1Frame1 12class Folder1folder1Frame1( folder1.folder1Frame1 ): 13 def __init__( self, parent ): 14 folder1.folder1Frame1.__init__( self, parent ) 15 16 # Handlers for folder1Frame1 events. 17 def folder1_select_buttonOnButtonClick( self, event ): 18 # TODO: Implement folder1_select_buttonOnButtonClick 19 ####ここを追加1##### 20 path = "folder1_path" 21 path = filedialog.askdirectory(initialdir = path ) 22 ####ここまで#### 23 pass 24 25if __name__ == '__main__': 26 app = wx.App(False) 27 frame = folder1Frame1(None) 28 frame.Show(True) 29 app.MainLoop() 30 31####ここを追加2#### 32def ask_folder(): 33 #フォルダを選択の動作 34 path = filedialog.askdirectory() 35 folder1_path.set(path) 36 37# パラメータ 38folder1_path = tkinter.StringVar() 39 40# ウィジェット(フォルダ名) 41folder_box = ttk.Entry(folder1Frame1, textvariable=folder1_path)
また、ボタンを押してもフォルダ選択ダイアログも出ません。
勉強不足なのは重々承知で、お知恵を貸してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/15 11:53