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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Tkinter

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

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

Python

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

Q&A

解決済

1回答

2235閲覧

tkinterのエラー

skysoul

総合スコア111

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Tkinter

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

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

Python

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

0グッド

0クリップ

投稿2020/06/07 04:02

cannot use geometry manager grid inside .!toplevel which already has slaves managed by pack
以下のコードで↑のエラーが出ます

python

1 global settei_butto 2 global auto_up 3 global users 4 global all_users 5 6 tki_settei_log = tkinter.Toplevel() 7 tki_settei_log.geometry('300x300') 8 tki_settei_log.title('設定') 9 # Canvas Widget を生成 10 canvas = tkinter.Canvas(tki_settei_log) 11 12 # Top Widget上に Scrollbar を生成して配置 13 bar = tkinter.Scrollbar(tki_settei_log, orient=tkinter.VERTICAL) 14 bar.pack(side=tkinter.RIGHT, fill=tkinter.Y) 15 bar.config(command=canvas.yview) # ScrollbarでCanvasを制御 16 17 # Canvas Widget をTopWidget上に配置 18 canvas.config(yscrollcommand=bar.set) # Canvasのサイズ変更をScrollbarに通知 19 canvas.config(scrollregion=(0,0,500,500)) #スクロール範囲 20 canvas.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=True) 21 22 # Frame Widgetを 生成 23 frame = tkinter.Frame(canvas) 24 25 # Frame Widgetを Canvas Widget上に配置 26 canvas.create_window((0,0), window=frame, anchor=tkinter.NW, width=500, height=500) 27 28 # Frame Widget上に各buttonを表示 29 global users 30 global all_users 31 users=subprocess.run(['powershell.exe', '-command', '(Get-WmiObject Win32_UserAccount).name'],encoding='utf-8',capture_output=True) 32 all_users=users.stdout.split() 33 34 # ラジオボタン判定変数作成 35 settei_button = tkinter.IntVar() 36 settei_button.set(auto_up) 37 38 # auto up 案内 39 auto_up_ravel = tkinter.Label(tki_settei_log,text='PCを立ち上げたときと同時にこのアプリも起動する') 40 auto_up_ravel.grid(column=0, row=0, sticky=tkinter.W) 41 42 # ONOFFラジオボタン 43 auto_on = tkinter.Radiobutton(tki_settei_log, value=0, variable=settei_button, text='ON') 44 auto_on.grid(column=0, row=1, sticky=tkinter.W) 45 auto_off = tkinter.Radiobutton(tki_settei_log, value=1, variable=settei_button, text='OFF') 46 auto_off.grid(column=0, row=2, sticky=tkinter.W) 47 48 # buttonステータス初期化 49 a = [tkinter.BooleanVar() for _ in range(3)] 50 z = [tkinter.Checkbutton()] * len(all_users) 51 52 # アカウントのチェックボタン 53 for i in range(0,len(all_users)): 54 z[i] = tkinter.Checkbutton(canvas, text=all_users[i]) 55 z[i].grid(column=0, row=i+3, sticky=tkinter.W) 56 57 tki_settei_log.mainloop()

変えたくないこと

チェックボタンはgrid,もしくはそれと同じ機能を持つ文 ということ。

環境

python3.8.3rc1
windows10home
pip無し

全文

https://skysoulinc.web.fc2.com/text_kyouyuu/todo_mondaiten.html

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

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

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

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

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

guest

回答1

0

ベストアンサー

動かないコードは見ていませんが、エラーメッセージを検索したら過去に同様の質問がありました。

https://teratail.com/questions/171470

packで要素を配置したコンポーネントにはgridを配置できないというエラーです。
スクロールバーをpackで配置しているのが怪しい。gridに配置するようにすれば良いのでは。

同じようにスクロールバーをpackで配置してハマった記事も検索で見つけましたので参考にしては。
https://stackoverrun.com/ja/q/6461412

投稿2020/06/07 05:43

hope_mucci

総合スコア4447

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

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

skysoul

2020/06/07 11:01

えっと、grid()でスクロールバー配置ってどうやるのですか? global settei_butto global auto_up global users global all_users tki_settei_log = tkinter.Toplevel() tki_settei_log.geometry('300x300') tki_settei_log.title('設定') # Canvas Widget を生成 canvas = tkinter.Canvas(tki_settei_log) # Top Widget上に Scrollbar を生成して配置 bar = tkinter.Scrollbar(tki_settei_log, orient=tkinter.VERTICAL) bar.grid(row=6,column=0,sticky=(tkinter.N, tkinter.S)) bar.config(command=canvas.yview) # ScrollbarでCanvasを制御 # Canvas Widget をTopWidget上に配置 canvas.config(yscrollcommand=bar.set) # Canvasのサイズ変更をScrollbarに通知 canvas.config(scrollregion=(0,0,500,500)) #スクロール範囲 canvas.grid(row=6,column=0,sticky=(tkinter.N, tkinter.S)) # Frame Widgetを 生成 frame = tkinter.Frame(canvas) # Frame Widgetを Canvas Widget上に配置 canvas.create_window((0,0), window=frame, anchor=tkinter.NW, width=500, height=500) # Frame Widget上に各buttonを表示 global users global all_users users=subprocess.run(['powershell.exe', '-command', '(Get-WmiObject Win32_UserAccount).name'],encoding='utf-8',capture_output=True) all_users=users.stdout.split() # ラジオボタン判定変数作成 settei_button = tkinter.IntVar() settei_button.set(auto_up) # auto up 案内 auto_up_ravel = tkinter.Label(tki_settei_log,text='PCを立ち上げたときと同時にこのアプリも起動する') auto_up_ravel.grid(column=0, row=0, sticky=tkinter.W) # ONOFFラジオボタン auto_on = tkinter.Radiobutton(tki_settei_log, value=0, variable=settei_button, text='ON') auto_on.grid(column=0, row=1, sticky=tkinter.W) auto_off = tkinter.Radiobutton(tki_settei_log, value=1, variable=settei_button, text='OFF') auto_off.grid(column=0, row=2, sticky=tkinter.W) # buttonステータス初期化 a = [tkinter.BooleanVar() for _ in range(3)] z = [tkinter.Checkbutton()] * len(all_users) # アカウントのチェックボタン for i in range(0,len(all_users)): z[i] = tkinter.Checkbutton(canvas, text=all_users[i]) z[i].grid(column=0, row=i+3, sticky=tkinter.W) tki_settei_log.mainloop()
skysoul

2020/06/07 11:02

こんな感じにしましたが無理でした
hope_mucci

2020/06/07 12:01

いきなり今あるコードに理屈もわからず適当に足しているから混乱しているのでは。 ・現象を確認できる最低限のサンプルコードを作る ・不要箇所をどんどんコメントアウトしてき、問題が発生している個所を特定する などの作業で動作検証してみてください。 問題がどこにあるのかを絞るのにも、問題点を整理するのにも、最低限のコードを作る作業は有用です。 あと、この記事を読んで心に深く刻んてほしい。 http://r-h.hatenablog.com/entry/20110323
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問