鱼C论坛

 找回密码
 立即注册
查看: 1234|回复: 9

[已解决]请问:怎么修改,打印的字符串才是我想要的间距?

[复制链接]
发表于 2021-7-21 17:04:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
from tkinter import *

root = Tk("1500x1500")

root.title('2116')
Label(root, text='整理号:').grid(row=0, column=0)
Label(root, text='C-No:').grid(row=0, column=1)
Label(root, text='订货单位:').grid(row=0, column=2)
Label(root, text='科名:').grid(row=0, column=3)
Label(root, text='委托人:').grid(row=0, column=4)
Label(root, text='委托年、月、日:').grid(row=0, column=5)

e1 = Entry(root)
e2 = Entry(root)
e3 = Entry(root)
e4 = Entry(root)
e5 = Entry(root)
e6 = Entry(root)

e1.grid(row=1, column=0, padx=0, pady=0)
e2.grid(row=1, column=1, padx=0, pady=0)
e3.grid(row=1, column=2, padx=0, pady=0)
e4.grid(row=1, column=3, padx=0, pady=0)
e5.grid(row=1, column=4, padx=0, pady=0)
e6.grid(row=1, column=5, padx=0, pady=0)


def show():  # 当输入内容时点击获取信息会打印
    print('1'.rjust(2), end='')  # 卡片1
    print('%s'.ljust(4) % e1.get(), end='')  # 整理号
    print('%s'.ljust(16) % e2.get(), end='')  # C-No
    print('%s'.ljust(30) % e3.get(), end='')  # 订货单位
    print('%s'.ljust(6) % e4.get(), end='')  # 科名
    print('%s'.ljust(14) % e5.get(), end='')  # 委托人
    print('%s'.ljust(8) % e6.get())  # 委托年、月、日


Button(root, text='获取信息', width=10, command=show) \
 \
    .grid(row=3, column=0, sticky=W, padx=10, pady=5)

mainloop()

输入:
2021 C2209JD liyang CPEPE- Y-Y-X 21-07-21

输出结果:
12021  C2209JD              liyang                            CPEPE-    Y-Y-X            21-07-21
我想要的结果:
12021C2209JD         liyang                        CPEPE-Y-Y-X         21-07-21


初学小白希望各位大佬不吝赐教~
最佳答案
2021-7-21 17:55:20
我是小树啦 发表于 2021-7-21 17:51
不好意思回复慢了,问题也可以这样描述就容易理解:“整理号”长度必定<4,但是一定占4个格子;“C-No” ...
print("1","%4s"%e1.get(),"%16s"%e2.get(),"%30s"%e3.get(),"%6s"%e4.get(),"%14s"%e5.get(),"%8s"%e6.get(),sep="")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-21 17:07:15 | 显示全部楼层
# 整理号:2021
# C-No:C2209JD
# 订货单位:liyang
# 科名:CPEPE-
# 委托人:Y-Y-X
# 委托年、月、日:21-07-21
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 17:09:51 | 显示全部楼层
本帖最后由 xiaosi4081 于 2021-7-21 17:14 编辑

可以直接用1个print 函数输出:
print(arg1,arg2,....,sep="用什么分隔开两个值")
也可以加空格解决

也可以将编辑器的字体设置为等宽字体Consola

参考代码:
from tkinter import *

root = Tk("1500x1500")

root.title('2116')
Label(root, text='整理号:').grid(row=0, column=0)
Label(root, text='C-No:').grid(row=0, column=1)
Label(root, text='订货单位:').grid(row=0, column=2)
Label(root, text='科名:').grid(row=0, column=3)
Label(root, text='委托人:').grid(row=0, column=4)
Label(root, text='委托年、月、日:').grid(row=0, column=5)

e1 = Entry(root)
e2 = Entry(root)
e3 = Entry(root)
e4 = Entry(root)
e5 = Entry(root)
e6 = Entry(root)

e1.grid(row=1, column=0, padx=0, pady=0)
e2.grid(row=1, column=1, padx=0, pady=0)
e3.grid(row=1, column=2, padx=0, pady=0)
e4.grid(row=1, column=3, padx=0, pady=0)
e5.grid(row=1, column=4, padx=0, pady=0)
e6.grid(row=1, column=5, padx=0, pady=0)


def show():  # 当输入内容时点击获取信息会打印
    print(e1.get(),e2.get(),"         ",e3.get(),"                        ",e4.get(),e5.get(),"         ",e6.get())


Button(root, text='获取信息', width=10, command=show) \
 \
    .grid(row=3, column=0, sticky=W, padx=10, pady=5)

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-21 17:18:01 | 显示全部楼层
xiaosi4081 发表于 2021-7-21 17:09
可以直接用1个print 函数输出:

也可以加空格解决

谢谢,明白你的意思了。ljust()在这里面不起作用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 17:18:36 | 显示全部楼层
我是小树啦 发表于 2021-7-21 17:18
谢谢,明白你的意思了。ljust()在这里面不起作用

能不能设置最佳?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-21 17:24:36 | 显示全部楼层
xiaosi4081 发表于 2021-7-21 17:09
可以直接用1个print 函数输出:

也可以加空格解决

手动加空格看似可以解决问题,我实际是想要以下打印代码的效果:
print('1'.rjust(2), end='')  # 卡片1
print('2021'.ljust(4), end='')  # 整理号
print('C2209JD'.ljust(16), end='')  # C-No
print('liyang'.ljust(30), end='')  # 订货单位
print('CPEPE-'.ljust(6), end='')  # 科名
print('Y-Y-X'.ljust(14), end='')  # 委托人
print('21-07-21'.ljust(8))  # 委托年、月、日
也就是:保证”整理号“在第3~第6格之间,”C-No“在第7~20格之间,”订货单位“在第23~第52格之间。。。。。。
手动添加空格,下次改变输入的内容,位置又跑掉了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 17:26:17 | 显示全部楼层
我是小树啦 发表于 2021-7-21 17:24
手动加空格看似可以解决问题,我实际是想要以下打印代码的效果:

也就是:保证”整理号“在第3~第6格 ...

这几个值有没有限定的位数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 17:27:35 | 显示全部楼层
我是小树啦 发表于 2021-7-21 17:24
手动加空格看似可以解决问题,我实际是想要以下打印代码的效果:

也就是:保证”整理号“在第3~第6格 ...

有没有别的例子?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-21 17:51:00 From FishC Mobile | 显示全部楼层
xiaosi4081 发表于 2021-7-21 17:26
这几个值有没有限定的位数?

不好意思回复慢了,问题也可以这样描述就容易理解:“整理号”长度必定<4,但是一定占4个格子;“C-No”长度必定<16,但是一定占16个格子,并接在“整理号”占掉的格子后面;“订货单位”长度必定<30,但一定占30个格子,接在上一个占掉的格子后面。。。。依次类推
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 17:55:20 | 显示全部楼层    本楼为最佳答案   
我是小树啦 发表于 2021-7-21 17:51
不好意思回复慢了,问题也可以这样描述就容易理解:“整理号”长度必定<4,但是一定占4个格子;“C-No” ...
print("1","%4s"%e1.get(),"%16s"%e2.get(),"%30s"%e3.get(),"%6s"%e4.get(),"%14s"%e5.get(),"%8s"%e6.get(),sep="")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 01:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表