(python)tkinter滚动条,带有用户生成的输入字段

2024-06-23 18:39:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个tkintergui(我的第一个GUI),它是从用户输入中收集数据。在

不管怎样,我这样做的方式如下

from Tkinter import *
root = Tk()
textoutput = []
textbox = Entry(root, width = 5) 
textinput = []

x = 0 
offset = 0
yco = 40
press = 0 

textbox.pack()
textbox.place(x = 10, y = yco + offset) 

def addtextbox():
   global textinput, x, yco, offset, press, textbox

 offset = offset + 30
 txtinput = textbox.get()
 textinput.append(txtinput)

 textbox = Entry(root, width = 5)
 textbox.place(x = 10, y = yco + offset)



add = Button(root, text = "Add box", width = 10, command = addtextbox)    

add.pack()
add.place(x = 225, y = 5)

root.mainloop()

我遇到的问题是,当有太多的文本框看不见,我需要一个滚动条。我试过使用effbot.org网站我也在谷歌上搜索过其他一些地方,但他们所做的只是滚动背景,而不是文本框本身。在

有什么想法吗?在

干杯

亚伦


Tags: addplaceroottextinputwidthpackoffsetpress
1条回答
网友
1楼 · 发布于 2024-06-23 18:39:56

这里有一个(合理地)简单的基于类的解决方案。这个类是一个tkinter画布(允许很好地滚动)。我将画布用作几何管理器,以便可以将条目小部件放在我选择的任何位置(使用create_window方法)。在

import Tkinter as tk    

class Manager(tk.Canvas):
    def __init__(self,master=None,**kwargs):
        tk.Canvas.__init__(self,master,**kwargs)
        self.widgets=[]

    def add_entry(self):
        entry = tk.Entry(self, width = 5)
        self.create_window(0,self._ypos(), anchor = tk.N+tk.W, window = entry)
        self.widgets.append(entry)

    def get_data(self):
        for w in self.widgets:
            print (w.get())

    def _ypos(self):
        return sum(x.winfo_reqheight() for x in self.widgets)

if __name__ == "__main__":
    root = tk.Tk()
    manager = Manager(root)
    manager.grid(row=0,column=0)
    scroll = tk.Scrollbar(root)
    scroll.grid(row=0,column=1,sticky=tk.N+tk.S)
    manager.config(yscrollcommand = scroll.set)
    scroll.config(command=manager.yview)
    b = tk.Button(root, text = "add entry", command = manager.add_entry)
    b.grid(row=1,column=0)
    b2 = tk.Button(root, text = "print stuff", command = manager.get_data)
    b2.grid(row=2,column=0)
    root.mainloop()

由@BryanOakley推荐(谢谢!)(未测试

^{pr2}$

现在像以前一样做其他的事情来设置滚动条,你应该已经准备好了。在

相关问题 更多 >

    热门问题