无法在里面使用几何管理器包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在里面使用几何管理器包相关的知识,希望对你有一定的参考价值。

所以我正在使用tkinter库创建一个rss阅读器,在我的一个方法中,我创建了一个文本小部件。它显示正常,直到我尝试向其添加滚动条。

这是滚动条前的代码:

   def create_text(self, root):
        self.textbox = Text(root, height = 10, width = 79, wrap = 'word')
        self.textbox.grid(column = 0, row = 0)

这是我的代码之后:

def create_text(self, root):
        self.textbox = Text(root, height = 10, width = 79, wrap = 'word')
        vertscroll = ttk.Scrollbar(root)
        vertscroll.config(command=self.textbox.yview)
        vertscroll.pack(side="right", fill="y", expand=False)
        self.textbox.config(yscrllcommand=vertscroll.set)
        self.textbox.pack(side="left", fill="both", expand=True)
        self.textbox.grid(column = 0, row = 0)

这给了我错误

_tkinter.TclError:不能在.56155888里面使用几何管理器包,它已经有一行由网格管理的子行在vertscroll.pack(side =“right”,fill =“y”,expand = False)

任何想法如何解决这一问题?

答案

根据the docs,不要在同一个主窗口中混合使用packgrid

警告:切勿在同一主窗口中混合网格和打包。 Tkinter很乐意度过余生,试图协商一个管理人员都满意的解决方案。而不是等待,杀死应用程序,再看看你的代码。一个常见的错误是对某些小部件使用了错误的父级。

因此,如果您在文本框中调用grid,请不要在滚动条上调用pack


import Tkinter as tk
import ttk

class App(object):
    def __init__(self, master, **kwargs):
        self.master = master
        self.create_text()

    def create_text(self):
        self.textbox = tk.Text(self.master, height = 10, width = 79, wrap = 'word')
        vertscroll = ttk.Scrollbar(self.master)
        vertscroll.config(command=self.textbox.yview)
        self.textbox.config(yscrollcommand=vertscroll.set)
        self.textbox.grid(column=0, row=0)
        vertscroll.grid(column=1, row=0, sticky='NS')

root = tk.Tk()
app = App(root)
root.mainloop()
另一答案

代码的原因很简单,你不能在同一个类或相同的框架内使用包和网格。因此,只使用一个。

以上是关于无法在里面使用几何管理器包的主要内容,如果未能解决你的问题,请参考以下文章

计算片段着色器内平面的法线

如果几何着色器处于活动状态,如何将信息从顶点着色器传递到片段着色器?

SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端Eureka 服务信息Eureka 发现管理Eureka 安全配置Eureka-HA(高可用) 机制Eur(代码片段

带有边距和页面转换器的片段内的 ViewPager 无法正确呈现

Flutter- 图像选择器包:通过删除操作一张一张地显示图像

Flutter 表单构建器包图像选择器 Firestore Flutter