为什么我的python程序会切断tkinter输出的一个好部分?

为什么我的python程序会切断tkinter输出的一个好部分?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在编写一个简单的应用程序,用python和tkinter帮助跟踪dnd的作战信息。我从输入页面开始,它工作得很好,但是当我开始使用选项卡来允许用户访问帮助页面时,奇怪的是它切断了大约一半的原始输出,我唯一改变的是使用ttk和my_frame 1而不是root。我试着将.place改为.grid,它在某种程度上起了作用,尽管它在其他输出前面的奇怪位置显示了按钮。然后我尝试在help标签上添加空行,这确实有效,但似乎效率很低,而且很耗时。我可以从这里猜测没有空间,但几何设置为500x500,这应

我正在编写一个简单的应用程序,用python和tkinter帮助跟踪dnd的作战信息。我从输入页面开始,它工作得很好,但是当我开始使用选项卡来允许用户访问帮助页面时,奇怪的是它切断了大约一半的原始输出,我唯一改变的是使用ttk和my_frame 1而不是root。我试着将.place改为.grid,它在某种程度上起了作用,尽管它在其他输出前面的奇怪位置显示了按钮。然后我尝试在help标签上添加空行,这确实有效,但似乎效率很低,而且很耗时。我可以从这里猜测没有空间,但几何设置为500x500,这应该足够了。所以我在想到底出了什么问题。谢谢你的阅读! (另外,它还不是很完整,因此为什么下一页函数会做一些随机的事情) 代码如下:

将tkinter作为tk导入
从tkinter导入ttk
#启动tkinter
root=tk.tk()
根标题(“龙与地下城战斗经理”)
根几何(“500x500”)
root.configure(background=“White”)
#初始化阵列
玩家详细信息=[]
总体_数据=[]
#帮助页
my_notebook=ttk.notebook(根目录)
我的笔记本包(pady=15)
my_frame1=tk.Frame(my_笔记本,width=“500”,height=“500”)
my_frame1.grid(行=0,列=0,列span=2,padx=40,pady=5)
my_frame2=tk.Frame(my_笔记本,宽度=500,高度=500)
my_notebook.add(my_frame1,text=“Main”)
my_notebook.add(my_frame2,text=“Help”)
line1=tk.Label(my_frame2,text=“您好,欢迎来到帮助页面!”,font=('Times New Roman',12)).grid(行=0,列=0,粘性='W')
line2=tk.Label(my_frame2,text=“大多数说明将在应用程序使用期间给出”,font=('Times New Roman',12)).grid(行=1,列=0,粘性='W')
line3=tk.Label(my_frame2,text=“请确保所有数字输入都是整数”,font=('Times New Roman',12)).grid(行=2,列=0,粘性='W')
line4=tk.Label(my_frame2,text=“如果出现任何错误,请按重新启动按钮”,font=('Times New Roman',12)).grid(行=3,列=0,粘性='W')
line5=tk.Label(my_frame2,text=“一旦显示订单,就不能更改”,font=('Times New Roman',12)).grid(行=4,列=0,粘性='W')
line6=tk.Label(my_frame2,text=“但是,运行状况可以随时编辑”,font=('Times New Roman',12)).grid(行=5,列=0,粘性='W')
line7=tk.Label(my_frame2,text=“祝你好运!”,font=('Times New Roman',12)).grid(row=6,column=0,sticky='W')
#主要部分
tk.Label(my_frame1,text=“Player details form”,font=('Times New Roman',16)).grid(行=0,列=0,padx=25,pady=5)
#函数定义
def submit():
玩家详细信息=[]
player\u details.append(name.get())
player\u details.append(health.get())
player_details.append(ac.get())
player\u details.append(initiative.get())
总数据。附加(玩家详细信息)
打印(str(总体数据))
player_num=tk.Label(root,text=“为player输入:”+str(len(整体_数据)+1),fg='White',bg=“Black”)
玩家数量位置(x=30,y=210,宽度=240,高度=25)
def clear():
名称。删除(0,“结束”)
运行状况。删除(0,“结束”)
ac.delete(0,“结束”)
计划。删除(0,“结束”)
name.focus_set()
定义下一页():
印刷品(“鸡肉”)
#展示
玩家_数据=['Name:'、'Health:'、'armor Class:'、'initiative:']
标签=范围(4)
对于范围(4)中的i:
bg_color=“黑色”
l=tk.标签(my_frame1,
text=player_数据[i],
fg='白色',
bg=bg_颜色)
l、 位置(x=20,y=60+i*30,宽度=120,高度=25)
name=tk.Entry(my_frame1,width=15,fg=“黑色”,bg=“白色”)
名称.地点(x=150,y=60,宽=120,高=25)
health=tk.Entry(my_frame1,width=15,fg=“黑色”,bg=“白色”)
健康。位置(x=150,y=90,宽度=120,高度=25)
ac=tk.条目(my_frame1,宽度=15,fg=“黑色”,bg=“白色”)
交流位置(x=150,y=120,宽度=120,高度=25)
初始值=tk.Entry(my_frame1,width=15,fg=“黑色”,bg=“白色”)
位置(x=150,y=150,宽度=120,高度=25)
submit_button=tk.button(my_frame1,text=“submit”,command=submit)
提交按钮。位置(x=30,y=180,宽度=100,高度=25)
清除按钮=tk.按钮(my_frame1,text=“clear”,command=clear)
清除按钮。放置(x=160,y=180,宽度=100,高度=25)
player_num=tk.Label(my_frame1,text=“为player输入:1”,fg=“白色”,bg=“黑色”)
玩家数量位置(x=30,y=210,宽度=240,高度=25)
next\u button=tk.button(my\u frame1,text=“next”,command=next\u页面)
下一个按钮。位置(x=30,y=240,宽度=100,高度=25)
'''

这是因为您没有将笔记本电脑制作得足够大,也没有要求将其展开以填满可用空间。你依赖于笔记本电脑的默认大小,而且你放的东西太多了。另外,您正在笔记本中使用
place
而不是
pack
,并且
place
不会导致包含的窗口增大或缩小。这是将
place
用作通用布局机制的缺点之一

简单的解决方案是使用
pack
支持的选项,例如
fill
expand
,但如果不知道完整的UI应该是什么样子,很难说这是不是正确的解决方案

my_notebook.pack(fill="both", expand=True)


另一个解决方案是停止使用
place
。如果使用
grid
和/或
pack
,则笔记本将调整大小以适应其内容。

name错误:未定义名称“下一页”