2016-11-02 28 views
0

スクロールバーに少し問題がありました。機能的にはすべて正常に機能しています。スクロールバーが表示され、テキストウィジェットへの挿入やスクロール操作に反応します。しかし、アプリケーションの開始直後に、すべてのスクロールバーの矢印ボタンは、アプリケーションウィンドウのサイズを変更するまでグレー表示されます。グリッド設定でフレームに関する基本的な問題はありますか? Upper Left(UL)、Upper Right(UR)、Lower Left(LL)、Lower Right(LR)の4つに分かれています。Python Tkinterのスクロールバーの矢印がグレー表示されました

import Tkinter 
from Tkinter import * 

class findhash_tk(Tkinter.Tk): 

    def __init__(self, parent): 

     Tkinter.Tk.__init__(self, parent) 
     self.parent = parent 
     self.initialize() 

    def initialize(self): 

     self.frameUL = Tkinter.LabelFrame(self, text="Upper left") 
     self.frameUL.grid(row=0, column=0, sticky=W+E+N+S, padx=2, pady=2) 

     self.frameUR = Tkinter.LabelFrame(self, text="Upper right") 
     self.frameUR.grid(row=0, column=1, sticky=W+E+N+S, padx=2, pady=2) 

     self.frameLL = Tkinter.LabelFrame(self, text="Lower left") 
     self.frameLL.grid(row=1, column=0, sticky=W+E+N+S, padx=2, pady=2) 

     self.frameLR = Tkinter.LabelFrame(self, text="Lower right") 
     self.frameLR.grid(row=1, column=1, sticky=W+E+N+S, padx=2, pady=2) 

     self.scrollbarUR = Tkinter.Scrollbar(self.frameUR, orient='vertical') 
     self.scrollbarUR.grid(row=0, column=1, sticky=N+S)  

     self.textBoxUR = Tkinter.Text(self.frameUR) 
     self.textBoxUR.config(yscrollcommand=self.scrollbarUR.set) 
     self.textBoxUR.grid(row=0, column=0, sticky=W+E+N+S) 

     self.scrollbarUR.config(command=self.textBoxUR.yview) 

     self.scrollbarLLV = Tkinter.Scrollbar(self.frameLL, orient='vertical') 
     self.scrollbarLLV.grid(row=0, column=1, sticky=N+S) 

     self.scrollbarLLH = Tkinter.Scrollbar(self.frameLL, orient='horizontal') 
     self.scrollbarLLH.grid(row=1, column=0, sticky=W+E) 

     self.textBoxLL = Tkinter.Text(self.frameLL) 
     self.textBoxLL.config(wrap="none", yscrollcommand=self.scrollbarLLV.set, xscrollcommand=self.scrollbarLLH.set) 
     self.textBoxLL.grid(row=0, column=0, sticky=W+E+N+S) 

     self.scrollbarLLV.config(command=self.textBoxLL.yview) 
     self.scrollbarLLH.config(command=self.textBoxLL.xview) 

     self.scrollbarLRV = Tkinter.Scrollbar(self.frameLR, orient='vertical') 
     self.scrollbarLRV.grid(row=0, column=1, sticky=N+S) 

     self.scrollbarLRH = Tkinter.Scrollbar(self.frameLR, orient='horizontal') 
     self.scrollbarLRH.grid(row=1, column=0, sticky=W+E) 

     self.textBoxLR = Tkinter.Text(self.frameLR) 
     self.textBoxLR.config(wrap="none", yscrollcommand=self.scrollbarLRV.set, xscrollcommand=self.scrollbarLRH.set) 
     self.textBoxLR.grid(row=0, column=0, sticky=W+E+N+S) 

     self.scrollbarLRV.config(command=self.textBoxLR.yview) 
     self.scrollbarLRH.config(command=self.textBoxLR.xview) 

     for x in range(50): 
      self.textBoxUR.insert(END, str(x) + "\n") 

     for x in range(50): 
      self.textBoxLL.insert(END, str(x) + "\n") 

     for x in range(50): 
      self.textBoxLR.insert(END, str(x) + "\n") 

if __name__ == "__main__": 
    app = findhash_tk(None) 
    app.title('Test App') 
    app.mainloop() 

Initial state of gui

答えて

0

スティックself.update()後:一部のスクロールバーがグレーアウト、あるいは「それはshouldnながら色付けされる水平方向の下部に残されます(動作しませんダウン、さらに奇妙なことに

self.textBoxUR.grid(row=0, column=0, sticky=W+E+N+S) 

t)。これはあなたのためにそれを修正しますが、それはバグのように見えます。

EDIT これは一貫していないと変わっていると言います。回避策は、後に置く)(初期設定:

self.wm_geometry("+4000+4000") 
self.after(500,lambda:self.wm_geometry("+10+10")) 

これは汚いですが、画面の外にウィンドウを配置することにより、ウィンドウ内のリフレッシュを強制的に(あなたの画面がすごい大きなより4000ピクセルの場合は、しかし、あなたは増やすことができます)と、半秒後に戻ってきます。これは奇妙な問題のように見えますが、Linuxでは(色は常に灰色がかっていますが)起こることはありません。

+0

下記の 'self.update()'を使ってみましたが、うまくいきませんでした。 提案する場所に置くと、「LL」の水平スクロールバーの矢印がグレーになります。 – ManuMeadow

+0

両方の水平スクロールバー(下が右下ですか?)は灰色で表示されます。スクロールするものは何もありません。この動作を変更しますか? – kabanus

+0

いいえ、まったくありません。しかし、あなたのソリューションでは、すべての矢印が黒く表示され、右下の水平バーも矛盾しています。左下のものだけがグレーのままです。 – ManuMeadow

関連する問題