質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2027閲覧

pysimpleguiでデータベースを作りたい

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/03/18 10:10

Python PySimpleGUI勉強中です。初心者ですがよろしくお願いします。
今は入力フォームを作成中です。フォーム完成したら、他のファイルのテーブルにデータベース蓄積していきたいです。(そのようなことができるのでしょうか?)
まずは一つ目の質問させていただきます。
WindowのComboの値によって2段目、3段目、4段目、5段目の一番左のInputTextの値を変更したいです。調べた結果のものを色々試してみましたが間違いだらけでしょうか実行されていません。
Comboは’F10,F20,F30,F40’です。

F10の場合上から りんご みかん バナナ 梨 スイカ
F20の場合上から 人間 サル わし くじら 鳥
F30の場合上から 東京 埼玉 茨城 宮城 富山
F40の場合 山田 大山 小島 渡辺 大島
としたいです。どこをどう書けばいいかわかりません。ご教示お願いしたいと思います。

今のコードです。
import PySimpleGUI as sg
import datetime
d_today = datetime.date.today()

レイアウト

sg.theme('Dark Blue 3')
sg.set_options(element_padding=(0, 1)) # 隙間無しに配置

#こちらが5段分あります↓
layout = [
[sg.InputText(d_today, size=(15, 1), ), sg.Combo(
['F10', 'F20', 'F30', 'F40'], size=(5, 1), , key='セット', enable_events=True)],
[sg.InputText(' ', size=(4, 1), key='InputText1'), sg.Submit(':'), sg.InputText(' ', size=(4, 1)), sg.InputText(' ', size=(4, 1)), sg.Submit(':'), sg.InputText(' ', size=(4, 1)), sg.InputText('', size=(5, 1)), sg.InputText('', size=(
15, 1)), sg.InputText('', size=(15, 1)), sg.InputText('', size=(18, 1)), sg.InputText('', size=(9, 1)), sg.InputText('', size=(8, 1)), sg.InputText('', size=(8, 1)), sg.InputText('', size=(5, 1)), sg.InputText('', size=(9, 1)), sg.InputText('', size=(7, 1))],

#↑のものが5段分あります。
[sg.Submit('実行ボタン')]
]

def F10_func():
input = {'InputText1': 'りんご ', 'InputText2': 'みかん',
'InputText3': 'バナナ', 'InputText4': '梨', 'InputText5': 'スイカ'}
#def F20_func():

def F30_func():

def F40_func():

window = sg.Window('作業日報', layout, size=(1320, 300))
while True:
event, Values = window.read()
if event == sg.WIN_CLOSED:
break

elif event == '-セット-':
F10_func()

elif (event, Value)
F20_func()

elif (event, Value)
F30_func()

elif (event, Value)
F40_func()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2022/03/18 10:37

IndentationErrorでますよ。
退会済みユーザー

退会済みユーザー

2022/03/18 19:53

すみません。初めて使わせていただいてルールがわかりませんでした。別に投稿した質問は締め切りました。削除はできませんでした。
megu_min19375A

2022/03/18 23:36 編集

別投稿の質問を締め切ったなら大丈夫ですよ。 そちらの質問に辿り着いた人がいたとしても、こちらを探すかもしれませんし。 ただマルチポストについては質問サイトで認めている(相互間共に)ってのは少ないかなと。 でも一気に作らずまず1つのComboの値が変化した時、どこに何をしたいのかから手を付けてみては如何ですか? InputTextを使う理由も不明(Comboで選択した値にリンクする物を表示するってだけではない?)ですしね。
megu_min19375A

2022/03/19 23:31

まずはExcelVBAでユーザーフォームを使って作成してみては如何でしょう。 そしたら『何が必要なのか?』直接的でないにしても条件がわかるかもです。
退会済みユーザー

退会済みユーザー

2022/03/20 05:05

ありがとうございます。調べているとinput Textが最初に目に付き作成始めました。inputだけでも作れるかなと思い始めたのですが違いがわかりません。 VBAでは作ったものはあるのですがそちらも1つのフォームのコンボボックスの内容でテキストボックスの表記を変えています。他のフォームを呼び出すより表記を変えようと考えました。 エクセルで充分なんですがそれをpythonを勉強し作成してみようと思いました。
megu_min19375A

2022/03/20 11:25 編集

pythonに挑まれるのは良い事と思います。 ただまず基礎的にどれだけ経験がおありなのか、またExcelの経験が有る点から考えてしまうとこの質問文が情報不足である事にお気づきになりませんか? 回答者は何もない状態で質問の文章のみで推測しなければなりません。 もっと簡易的な物を一度完成させてから応用していかないと、質問ではなく作成依頼になってしまいますよ。
guest

回答1

0

ベストアンサー

例えばこのようなCombo値でテキスト値を変化させる物から作成してみては?
PySimpleGUIは初めて使いましたけど、ググるとヒントになりそうなものは見つかりました。
Python自体は少しだけはかじってはいましたけれど、考え方としてはVBAやVB.NETなどの経験も含め検索するにも参考にしました。

Python

1import PySimpleGUI as sg 2 3combo_dicT = { 4'F10':['りんご','みかん','バナナ','梨','スイカ'], 5'F20':['人間','サル','わし','くじら','鳥'], 6'F30':['東京','埼玉','茨城','宮城','富山'], 7'F40':['山田','大山','小島','渡辺','大島'] 8} 9 10inp_TextBox = [] 11 12for n in range(5): 13 inp_TextBox.append([sg.InputText('', size=(10, 1), key='InputText' + str(n + 1))]) 14 15sg.theme('Dark Blue 3') 16sg.set_options(element_padding=(0, 1)) # 隙間無しに配置 17 18layout = [ 19[sg.Combo(['F10', 'F20', 'F30', 'F40'], size=(8, 1), key='セット', enable_events=True)], 20inp_TextBox 21] 22 23window = sg.Window('コンボボックステスト', size=(300, 300)).Layout(layout) 24 25while True: 26 event, values = window.Read() 27 if event is None or event == 'Exit': 28 break 29 30 if event == 'セット': 31 for i in range(len(combo_dicT[values['セット']])): 32 window.find_element('InputText' + str(i + 1)).Update(combo_dicT[values['セット']][i]) 33 34window.Close()

初めてなので参考になるか微妙ですね。

イメージ説明

投稿2022/03/21 04:51

編集2022/03/21 07:22
megu_min19375A

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/03/21 07:55

ありがとうございます。やりたいことが表現されていて感動しました。 このようなコードを書くにはまだまだ経験が必要です。VBAでも表現できません。私のググり方もダメなんでしょうが知識が無くどういったものを調べないといけないのかわかりません。それも含め勉強が必要と感じました。 ありがとうございました。
megu_min19375A

2022/03/22 02:19

ググり方に迷われるのであれば、参考書にて簡単な作品をまず仕上げてみるのをお勧めします。 参考書であれば手順通りで進めていけると思いますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問