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

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

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

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

解決済

python 孫ウィンドウ作成時に親ウィンドウの表示が変わってしまう。

Kazu
Kazu

総合スコア5

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

1回答

1評価

0クリップ

387閲覧

投稿2022/03/01 02:16

前提・実現したいこと

親ウィンドウ⇒子ウィンドウ⇒孫ウインドウと開き
孫ウィンドウにはカレンダーを表示したい。
よろしくお願い致します。

発生している問題・エラーメッセージ

親ウィンドウ⇒子ウィンドウ⇒孫ウインドウと遷移しているのですが 孫ウインドウを表示すると親ウィンドウの表示が変わってしまい ※長さすぎるためコードを一部削除しております。

初期画面(親)
イメージ説明
検索画面(子)
イメージ説明
修正画面(孫)
イメージ説明
この時の親画面
イメージ説明

該当のソースコード

python

import importlib import shutil import re, openpyxl import tkinter as tkm import pandas as pd import datetime from tkinter import ttk from tkinter import * from tkinter.ttk import * from tkinter import messagebox from tkinter import filedialog from tkcalendar import DateEntry class Application(tkm.Frame): def __init__(self,master): super().__init__(master) self.pack() self.master.geometry("550x280+500+350") self.mainwidget() self.mainwindow = [] self.subwindow = [] style = ttk.Style() style.theme_use("default") style.map("Treeview") #---------ボタン動作-START---------- #ファイル参照ボタン def select_files(self): #検索ボタン(検索画面表示) def search_window(self): self.mainwindow.append(tkm.Toplevel(highlightthickness=5, highlightbackground="white", highlightcolor="red")) self.subwindow.append(SubWindow(self.mainwindow[len(self.mainwindow)-1],len(self.mainwindow))) #---------ボタン動作-END---------- #-----------パーツ設定-START---------- def mainwidget(self): self.lbl01 = ttk.Label(self.master, text="登録者社員番号", width=17, anchor="e", justify=RIGHT) self.lbl02 = ttk.Label(self.master, text="支店", width=17, anchor="e", justify=RIGHT) self.lbl03 = ttk.Label(self.master, text="種別", width=13, anchor="e", justify=RIGHT) self.lbl04 = ttk.Label(self.master, text="日付", width=17, anchor="e", justify=RIGHT) self.lbl04_1 = ttk.Label(self.master, text="※電子データに記載がある日付を入力", width=30, anchor="e", justify=RIGHT) self.lbl05 = ttk.Label(self.master, text="プロジェクト番号", width=17, anchor= "e", justify=RIGHT) self.lbl06 = ttk.Label(self.master, text="枝番", width=17, anchor="e", justify=RIGHT) self.lbl07 = ttk.Label(self.master, text="顧客名", width=17, anchor="e", justify=RIGHT) self.lbl08 = ttk.Label(self.master, text="金額(税込)", width=17, anchor="e", justify=RIGHT) self.lbl08_1 = ttk.Label(self.master, text="※金額が発生しない場合でも 0 を入力", width=32, anchor="e", justify=RIGHT) self.lbl09 = ttk.Label(self.master, text="対象ファイル", width=17, anchor="e", justify=RIGHT) self.lbl10 = ttk.Label(self.master, text="ファイル保存先", width=17, anchor="e", justify=RIGHT) self.lbl11 = ttk.Label(self.master, text="変更後のファイル名", width=17, anchor="e", justify=RIGHT) self.lbl01.place(x=10, y=10) self.lbl02.place(x=10, y=35) self.lbl03.place(x=190, y=35) self.lbl04.place(x=10, y=60) self.lbl04_1.place(x=235, y=60) self.lbl05.place(x=10, y=85) self.lbl06.place(x=166, y=85) self.lbl07.place(x=10, y=110) self.lbl08.place(x=10, y=135) self.lbl08_1.place(x=220, y=135) self.lbl09.place(x=10, y=160) self.lbl10.place(x=10, y=185) self.lbl11.place(x=10, y=210) self.entry01 = ttk.Entry(self.master, justify=tkm.LEFT, width=13) self.combo02 = ttk.Combobox(self.master, justify=tkm.CENTER, width=13) self.combo03 = ttk.Combobox(self.master, justify=tkm.CENTER, width=16) self.date04 = DateEntry(date_pattern='yyyy/mm/dd', width=13) self.entry05 = ttk.Entry(self.master, justify = tkm.LEFT, width = 13) self.entry06 = ttk.Entry(self.master, justify=tkm.LEFT, width=5) self.entry07 = ttk.Entry(self.master, justify=tkm.LEFT, width=60) self.entry08 = ttk.Entry(self.master, justify=tkm.RIGHT, width=13) self.entry09 = ttk.Entry(self.master, justify=tkm.LEFT, width=60) self.btn12 = ttk.Button(self.master, text="参照", width=6, command=self.select_files) self.entry10 = ttk.Entry(self.master, justify=tkm.LEFT, width=60, state="readonly") self.entry11 = ttk.Entry(self.master, justify=tkm.LEFT, width=60, state="readonly") self.btn13 = ttk.Button(self.master, text="検索", width=10, state="enable", command=self.search_window) self.btn14 = ttk.Button(self.master, text="確認", width=10, state="enable", command=self.check) self.btn15 = ttk.Button(self.master, text="実行", width=10, state="disable", command=self.renameexe) self.btn16 = ttk.Button(self.master, text="クリア", width=10, command=self.initclear) self.entry01.place(x=130, y=10) self.combo02.place(x=130, y=35) self.combo03.place(x=280, y=35) self.date04.place(x=130, y=60) self.entry05.place(x=130, y=85) self.entry06.place(x=280, y=85) self.entry07.place(x=130, y=110) self.entry08.place(x=130, y=135) self.entry09.place(x=130, y=160) self.entry10.place(x=130, y=185) self.entry11.place(x=130, y=210) self.btn12.place(x=500, y=158) self.btn13.place(x=190, y=240) self.btn14.place(x=270, y=240) self.btn15.place(x=350, y=240) self.btn16.place(x=430, y=240) #-----------パーツ設定-END---------- #-----------サブウィンドウ画面(検索)START---------- class SubWindow(tkm.Frame): def __init__(self,master,num): super().__init__(master) self.pack() self.CorrectWindow = [] master.geometry("1500x400+100+300") master.title("検索画面") master.grab_set() self.set_data() self.sub_widget() self.subwindow = [] self.CorrectWindow = [] #各種パーツ読込 def sub_widget(self): self.sw_main = ttk.PanedWindow(self.master, orient="vertical") self.sw_main.pack(expand=True, fill=tkm.BOTH, side="left") self.sw_top = ttk.PanedWindow(self.sw_main, orient="horizontal", height=25) self.sw_main.add(self.sw_top) self.sw_bottom = ttk.PanedWindow(self.sw_main, orient="vertical") self.sw_main.add(self.sw_bottom) self.creat_input_frame(self.sw_top) self.create_tree(self.sw_bottom) #修正画面表示 def onDuble(self, event): self.subwindow.append(tkm.Toplevel(highlightthickness=5, highlightbackground="white", highlightcolor="red")) self.CorrectWindow.append(CorrectWindow(self.subwindow[len(self.subwindow)-1],len(self.subwindow))) #-----------修正ウィンドウ画面 START---------- class CorrectWindow(tkm.Frame): def __init__(self,master,num): super().__init__(master) self.pack() master.geometry("550x250+500+350") master.title("修正画面") master.grab_set() self.correct_widget() self.set_correct_data() #-----------パーツ設定-START---------- def correct_widget(self): self.correct_lbl00 = ttk.Label(self.master, text="ID", width=17, anchor="e", justify=RIGHT) self.correct_lbl01 = ttk.Label(self.master, text="登録者社員番号", width=17, anchor="e", justify=RIGHT) self.correct_lbl02 = ttk.Label(self.master, text="支店", width=17, anchor="e", justify=RIGHT) self.correct_lbl03 = ttk.Label(self.master, text="種別", width=13, anchor="e", justify=RIGHT) self.correct_lbl04 = ttk.Label(self.master, text="日付", width=17, anchor="e", justify=RIGHT) self.correct_lbl04_1 = ttk.Label(self.master, text="※電子データに記載がある日付を入力", width=30, anchor="e", justify=RIGHT) self.correct_lbl05 = ttk.Label(self.master, text="プロジェクト番号", width=17, anchor= "e", justify=RIGHT) self.correct_lbl06 = ttk.Label(self.master, text="枝番", width=17, anchor="e", justify=RIGHT) self.correct_lbl07 = ttk.Label(self.master, text="顧客名", width=17, anchor="e", justify=RIGHT) self.correct_lbl08 = ttk.Label(self.master, text="金額(税込)", width=17, anchor="e", justify=RIGHT) self.correct_lbl08_1 = ttk.Label(self.master, text="※金額が発生しない場合でも 0 を入力", width=32, anchor="e", justify=RIGHT) self.correct_lbl00.place(x=10, y=10) self.correct_lbl01.place(x=10, y=35) self.correct_lbl02.place(x=10, y=60) self.correct_lbl03.place(x=190, y=60) self.correct_lbl04.place(x=10, y=85) self.correct_lbl04_1.place(x=235, y=85) self.correct_lbl05.place(x=10, y=110) self.correct_lbl06.place(x=166, y=110) self.correct_lbl07.place(x=10, y=135) self.correct_lbl08.place(x=10, y=160) self.correct_lbl08_1.place(x=220, y=160) self.correct_entry00 = ttk.Entry(self.master, justify=tkm.LEFT, width=13) self.correct_entry01 = ttk.Entry(self.master, justify=tkm.LEFT, width=13) self.correct_combo02 = ttk.Combobox(self.master, justify=tkm.CENTER, width=13) self.correct_combo03 = ttk.Combobox(self.master, justify=tkm.CENTER, width=16) self.correct_date04 = DateEntry(date_pattern='yyyy/mm/dd', width=13) self.correct_entry05 = ttk.Entry(self.master, justify = tkm.LEFT, width = 13) self.correct_entry06 = ttk.Entry(self.master, justify=tkm.LEFT, width=5) self.correct_entry07 = ttk.Entry(self.master, justify=tkm.LEFT, width=60) self.correct_entry08 = ttk.Entry(self.master, justify=tkm.RIGHT, width=13) # self.correct_btn13 = ttk.Button(self.master, text="更新", width=10, state="enable", command=self.correct_update) # self.correct_btn14 = ttk.Button(self.master, text="キャンセル", width=10, state="enable", command=self.cancel) self.correct_entry00.place(x=130, y=10) self.correct_entry01.place(x=130, y=35) self.correct_combo02.place(x=130, y=60) self.correct_combo03.place(x=280, y=60) self.correct_date04.place(x=130, y=85) self.correct_entry05.place(x=130, y=110) self.correct_entry06.place(x=280, y=110) self.correct_entry07.place(x=130, y=135) self.correct_entry08.place(x=130, y=160) # self.correct_btn13.place(x=350, y=190) # self.correct_btn14.place(x=430, y=190) #-----------パーツ設定-END---------- def main(): win = tkm.Tk() app = Application(win) app.mainloop() if __name__ == '__main__': main()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

y_waiwai

2022/03/01 03:34

なにがどう変わるんでしょう。 問題が見えません
Kazu

2022/03/01 03:57

分かりにくくて申し訳ございません。 初期画面(親)⇒検索画面(子)⇒修正画面(孫)と遷移させると 初期画面(親)のプロジェクト番号部分にカレンダーが表示されてしまいます。 また、孫の画面には日付部分にカレンダーが表示できない状態となっております。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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