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

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

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

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

ウィジェット

ウィジェットとはユーザインタフェイスの要素(GUI widget)であるか、もしくは、独立した比較的サイズの小さいソフトウェアアプリケーション(desktop widget)のことを指します。

Python

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

解決済

pythonのtkinterを使用したgui作成時の.placeの使用方法を教えてください。

python_k
python_k

総合スコア7

Tkinter

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

ウィジェット

ウィジェットとはユーザインタフェイスの要素(GUI widget)であるか、もしくは、独立した比較的サイズの小さいソフトウェアアプリケーション(desktop widget)のことを指します。

Python

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

2回答

0リアクション

0クリップ

1138閲覧

投稿2021/03/27 06:57

編集2021/03/27 13:54

前提・実現したいこと

tkinterを使って指定した日付のデータを検索して保存するguiを作成してみようと考えています。

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

.placeを使いウィジェットを配置しようとしたところスピンボックスだけ表示されません。
また新しくウィンドウを作成して.placeでウィジェットを配置しようとしたところそちらではラベルやテキストボックスも表示されせん。
どこか記述の間違いや漏れがあったりしますでしょうか?
よろしくお願いします。

該当のソースコード

python

import tkinter from tkinter import * from tkinter import ttk import datetime import tkinter.filedialog import os,sys class MainMenu(tkinter.Frame): def __init__(self,master): super().__init__(master,width=450,height=400) self.pack() self.master.title('data') self.master.minsize() self.CreateWindow() def CreateWindow(self): self.sptxt1=tkinter.StringVar() self.sptxt2=tkinter.StringVar() self.sptxt3=tkinter.StringVar() self.sptxt4=tkinter.StringVar() self.sptxt5=tkinter.StringVar() self.sptxt6=tkinter.StringVar() self.stlbl=tkinter.Label(self,text='from') self.endlbl=tkinter.Label(self,text='to') self.datelbl1=tkinter.Label(self,text='/') self.datelbl2=tkinter.Label(self,text='/') self.styear=tkinter.Spinbox(self,textvariable=self.sptxt1,from_=2021,to=2999,increment=1,state='readonly',width=20) self.stmonth=tkinter.Spinbox(self,textvariable=self.sptxt2,from_=1,to=12,increment=1,state='readonly',width=10) self.stday=tkinter.Spinbox(self,textvariable=self.sptxt3,from_=1,to=31,increment=1,state='readonly',width=10) self.datelbl3=tkinter.Label(self,text='/') self.datelbl4=tkinter.Label(self,text='/') self.endyear=tkinter.Spinbox(self,textvariable=self.sptxt4,from_=2021,to=2999,increment=1,state='readonly',width=20) self.endmonth=tkinter.Spinbox(self,textvariable=self.sptxt5,from_=1,to=12,increment=1,state='readonly',width=10) self.endday=tkinter.Spinbox(self,textvariable=self.sptxt6,from_=1,to=31,increment=1,state='readonly',width=10) self.sttime=tkinter.Entry(self,width=20) self.endtime=tkinter.Entry(self,width=20) self.stlbl.place(x=10,y=20) self.styear.place(x=40,y=60,width=80,height=30) self.datelbl1.place(x=120,y=60) self.stmonth.place(x=140,y=60,width=60,height=30) self.datelbl2.place(x=200,y=60) self.stday.place(x=220,y=60,width=60,height=30) self.sttime.place(x=300,y=60,width=80,height=30) self.endlbl.place(x=10,y=120) self.endyear.place(x=40,y=160,width=80,height=30) self.datelbl3.place(x=120,y=160) self.endmonth.place(x=140,y=160,width=60,height=30) self.datelbl4.place(x=200,y=160) self.endday.place(x=220,y=160,width=60,height=30) self.endtime.place(x=300,y=160,width=80,height=30) self.button1=ttk.Button( text='OK', padding=(20,5), command=self.getText) self.button2=ttk.Button( text='cancel', padding=(20,5), command=self.quitWindow) self.button1.place(x=300,y=240) self.button2.place(x=300,y=270) self.inputRule() def inputRule(self): self.var1=tkinter.StringVar() self.stlbl["font"]=("",20) self.styear["font"]=("",20) self.stmonth["font"]=("",20) self.stday["font"]=("",20) self.datelbl1["font"]=("",20) self.datelbl2["font"]=("",20) self.var1.set("00:00") self.sttime["text"]=self.var1 self.sttime["font"]=("",20) self.var2=tkinter.StringVar() self.endlbl["font"]=("",20) self.endyear["font"]=("",20) self.endmonth["font"]=("",20) self.endday["font"]=("",20) self.datelbl3["font"]=("",20) self.datelbl4["font"]=("",20) self.var2.set("23:59") self.endtime["text"]=self.var2 self.endtime["font"]=("",20) def getText(self): date1=self.styear.get()+ '/'+ self.stmonth.get()+ '/'+ self.stday.get()+ ' '+self.sttime.get() date2=self.endyear.get()+ '/'+self.endmonth.get()+ '/'+ self.endday.get()+' '+self.endtime.get() #data_output(date1,date2) self.CreateNewWindow() def quitWindow(self): self.master.destroy() def CreateNewWindow(self): win2=tkinter.Toplevel(self.master) app=NewWindow(win2) win2.attributes('-topmost',True) win2.grab_set() class NewWindow(tkinter.Frame): def __init__(self,master): super().__init__(master,width=400,height=200) self.pack() self.master.title('save') self.create_save() def create_save(self): self.save_path=tkinter.Entry(self,width=20) self.save_path.place(x=10,y=10,height=30,width=210) self.path_button=ttk.Button( self, text='フォルダーの選択', padding=(20,5), command=self.GetPath) self.path_button.place(x=230,y=10) self.file_name=tkinter.Entry(self,width=20) self.file_name.place(x=10,y=50,height=30,width=210) self.file_name_tag=tkinter.Label(self,text="ファイル名") self.file_name_tag.place(x=230,y=50) self.file_save_button=ttk.Button( self, text='保存', padding=(20,5), command=self.file_save) self.file_save_button.place(x=165,y=100) self.button5=ttk.Button( self, text='cancel', padding=(20,5), command=self.quitWindow2) self.button5.place(x=280,y=100) def GetPath(self): self.dir = 'C:\' self.fld = tkinter.filedialog.askdirectory(initialdir = self.dir) self.var=tkinter.StringVar() self.var.set(self.fld) self.save_path["text"]=self.var def file_save(self): self.file_path_name=self.save_path.get()+'/'+self.file_name.get()+'.csv' print(self.file_path_name) def quitWindow2(self): self.master.destroy() def main(): root=tkinter.Tk() app=MainMenu(master=root) app.mainloop() if __name__=="__main__": main()

試したこと

https://teratail.com/questions/188436
こちらの質問に似た症状だったたため試してみたのですが表示は変わらすでした。

補足情報(FW/ツールのバージョンなど)

ウィンドウを表示するコードになります。
データを検索するプログラムをCreateWindowのクラス内に入れていたのですが、そちらを削除したところスピンボックスの方は表示されるようになりました。
visualstudioの方で編集実行していたのですが、pythonから実行したところスピンボックスの方は一つも表示されないという状態です。
新しく開くウィンドウの方は無事表示されるようになりました。

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

teamikl

2021/03/27 07:50 編集

実行可能なソースコードを掲載してください。 - StringVar, Spinbox クラスの import - getText, quitWindow, GetPath メソッドが未定義 - 呼び出し部分 (mainloop) がありません。

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

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

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

Tkinter

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

ウィジェット

ウィジェットとはユーザインタフェイスの要素(GUI widget)であるか、もしくは、独立した比較的サイズの小さいソフトウェアアプリケーション(desktop widget)のことを指します。

Python

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