2017-06-20 34 views
3

根據this來源:x和y滾動條都可以添加到tkinter的Text()小部件中。這在程序法的工作代碼爲:如何在tkinter中添加xscrollbar到Text小部件

from tkinter import * 
root = Tk() 

frame = Frame(master, bd=2, relief=SUNKEN) 

frame.grid_rowconfigure(0, weight=1) 
frame.grid_columnconfigure(0, weight=1) 

xscrollbar = Scrollbar(frame, orient=HORIZONTAL) 
xscrollbar.grid(row=1, column=0, sticky=E+W) 

yscrollbar = Scrollbar(frame) 
yscrollbar.grid(row=0, column=1, sticky=N+S) 

text = Text(frame, wrap=NONE, bd=0, 
     xscrollcommand=xscrollbar.set, 
     yscrollcommand=yscrollbar.set) 

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

xscrollbar.config(command=text.xview) 
yscrollbar.config(command=text.yview) 

frame.pack() 
root.mainloop() 

但是,我選擇了類方法,並寫了下面的代碼,根據下面的代碼Ÿ滾動的作品,但X滾動條不工作。爲什麼在這個例子中x scrollbar不起作用?

import tkinter as tk 


class App(tk.Frame): 
    def __init__(self, master=None): 
     super().__init__(master) 
     self.grid_rowconfigure(0, weight=1) 
     self.grid_columnconfigure(0, weight=1) 

     self.x_scrollbar = tk.Scrollbar(master=self, orient="horizontal") 
     self.x_scrollbar.grid(row=1, column=0, sticky="w, e") 

     self.y_scrollbar = tk.Scrollbar(master=self) 
     self.y_scrollbar.grid(row=0, column=1, sticky="n, s") 

     self.text = tk.Text(master=self, width=100, height=25, bg="black", fg="white", wrap=None) 
     self.text.grid(row=0, column=0, sticky="n, s, e, w") 

     self.configure_widgets() 
     self.pack() 

    def configure_widgets(self): 
     self.text.configure(xscrollcommand=self.x_scrollbar.set, yscrollcommand=self.y_scrollbar.set) 
     self.x_scrollbar.config(command=self.text.xview) 
     self.y_scrollbar.config(command=self.text.yview) 

if __name__ == "__main__": 
    root = tk.Tk() 
    app = App(master=root) 
    app.mainloop() 

回答

5

這裏的問題是沒有滾動條代碼,但的None在你的文本框的包裹配置的分配。在一個不相關的音符

變化

wrap=None 

wrap='none' 

變化sticky="n, s, e, w"sticky="nsew"逗號意味着什麼在這裏的報價。你的其他粘貼應該是"we""ns"

你可能一直在試圖做tkinter CONSTANTS版本的棒。這看起來像這樣:sticky=(N, S, E, W)。但是因爲你沒有導入*,這是行不通的。你可以從tkinter單獨導入每個常量,但在這種情況下,最好使用sticky="nsew"來代替。

僅供參考這裏是當你從tkinter

N='n' 
S='s' 
W='w' 
E='e' 
NW='nw' 
SW='sw' 
NE='ne' 
SE='se' 
NS='ns' 
EW='ew' 
NSEW='nsew' 
+0

導入*哦,謝謝,這個問題就解決了你的'nsew'常量列表。 –

+0

另外我更改了粘性名稱,再次感謝你。 –

+0

很高興爲您提供幫助。如果這個答案適合你,請考慮選擇我的答案旁邊的複選框。 –

相關問題