2017-06-15 15 views
0

以下のコードは、Text()関数がtkinterのテーブルを作成するためのコードです。このウィンドウにスクロールバーを追加したいのですが、Text()にスクロールバーを追加すると、このメソッドはウィンドウをスクロールするためのものではなく、Text()内をスクロールするためのものです。テキスト作成テーブルにスクロールバーを追加する方法

この例にジオメトリを追加しませんでした。現在のジオメトリは行と列の量に依存します。しかし、固定されたジオメトリサイズが要求され、行と列の量を書き込むときに、このスクロールバーで他の行と列が表示されるはずです。

from tkinter import * 


class Application: 
    def __init__(self): 

     self.window = Tk() 
     self.window.title("Database") 
     self.window.resizable(width=False, height=False) 

     self.frame_1 = Frame(bg="black") 
     self.frame_1.grid(row=0, column=0) 

     self.menubar = Menu(tearoff=0) 

     self.table() 
     self.menu() 
     self.mainloop = self.window.mainloop() 

    def table(self): 
     row = int(input("Row:")) 
     column = int(input("Column:")) 
     for i in range(row): 
      for j in range(column): 
       text = Text(self.frame_1, width=20, height=1) 
       text.bind("<Button-3>", self.popup) 
       text.grid(row=i, column=j, padx=1, pady=1) 
       text.configure(state="disabled") 

    def menu(self): 
     self.menubar.add_command(label="Copy", command=lambda: self.window.focus_get().event_generate('<<Copy>>')) 

    def popup(self, event): 
     self.menubar.post(event.x_root, event.y_root) 

答えて

0

あなたはgridでテキストウィジェットに追加ウィジェットをスクロールすることはできません。テキストウィジェットはwindow_createで埋め込まれたウィジェットのみをスクロールできます。

最も一般的な手法は、すべてのウィジェットをフレームに配置し、そのフレームをキャンバスに追加してキャンバスをスクロールすることです。例については、Adding a scrollbar to a group of widgets in Tkinterを参照してください。

+0

ありがとう、私は今リンクを見ています。 –

+0

あなたが書いた投稿に従ってコードを修正しました。私はスクロールバーをx軸とy軸の両方に配置します。あなたが書いたコードは機能しています。しかし、私は行と列の量に関する別の質問をしたい。たとえば、テストによると、max row * colは18 * 18です.19 * 19と入力すると、プログラムは計算しているかのように待機します。また、100 * 3を受け取りますが、100 * 4は受け付けません。理由を知っていますか? –

+0

@dildeolupbiten:別の質問をする場合は、「質問する」ボタンをクリックしてください。 Stackoverflowはコメントの長い会話をサポートするようには設計されていません。 –

関連する問題