Python 3.11 は SafeConfigParser が非推奨になっていた。
3.12 で完全削除のようです、3.11 は一応まだ動く。
今のうちに 2013 年に作った下記ページを書き換えとかないと。
てか GTK3 のコードだし、require_version していないし。
それと文字列をシングルクォートに統一でココは手をつけていないし。
自作クラスのほうも今なら正規表現にするし。
configparser — 設定ファイルのパーサー ? Python 3.11.1 ドキュメント
configparser.ConfigParser にすればいいのかな?
GTK4 で書き換えしてみよう。
#! /usr/bin/env python3 import os, configparser, gi gi.require_version('Gtk', '4.0') from gi.repository import Gtk INI = 'test.conf' class Win(Gtk.ApplicationWindow): ''' ini(conf) の読み書き例 Window の位置と大きさを保存と復元 ''' def __init__(self, a): ''' 起動時に ini を読み込む GTK4 は位置指定できないのかな? ''' Gtk.ApplicationWindow.__init__(self, application=a, title='ini') # 設定ファイルを探す if os.path.exists(INI): # configparser を作成し読み込む conf = configparser.ConfigParser() conf.read(INI) # 後での追記を考えて has_opthon しておこう cx = 200 cy = 200 if conf.has_option('window', 'width'): cx = conf.getint('window', 'width') if conf.has_option('window', 'height'): cy = conf.getint('window', 'height') self.set_default_size(cx, cy) def do_close_request(self): ''' GTK3 では do_delete_event 終了時に ini に書き込み ''' conf = configparser.ConfigParser() if os.path.exists(INI): conf.read(INI) # [window] セクションが存在しなければ追加 if not 'window' in conf.sections(): conf.add_section('window') # サイズを取得(タプルで戻る)して conf にセット cx, cy = self.get_default_size() conf.set('window', 'width', str(cx)) conf.set('window', 'height', str(cy)) # ファイルに書き込む with open(INI, 'w') as f: conf.write(f) return False app = Gtk.Application() app.connect('activate', lambda a: Win(a).present()) app.run()
これでイケるようだ。
そういえば GTK4 でウインドウの位置指定ってまだ調べていなかったな。