扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
from tkinter import *
成都创新互联公司主营瑞丽网站建设的网络公司,主营网站建设方案,APP应用开发,瑞丽h5微信平台小程序开发搭建,瑞丽网站营销推广欢迎瑞丽等地区企业咨询
from tkinter import ttk
from tkinter import font
import os
import arrange
# 课程的字典
crslst = {}
crslst_in_num = {}
# GUI
root = Tk()
# frame2
# 右侧的内容
frame2 = ttk.Frame(root, borderwidth=5, relief="sunken")
frame2.grid(column=1, row=0)
# 将数字转换为汉字的字典
numtoch = {1: '一', 2: '二', 3: '三', 4: '四', 5: '五'}
# 设置课表周围周一至周五和1至13的标签
for num in list(range(1, 6)):
ttk.Label(frame2, text='周' + numtoch[num]).grid(column=num, row=0)
emptylist = []
for num in list(range(1, 14)):
ttk.Label(frame2, text='第' + str(num) + '节').grid(column=0, row=num)
# 课表主体
schd1 = Listbox(frame2, height=13)
schd1.grid(column=1, row=1, rowspan=13, sticky=(N, S, E, W))
schd2 = Listbox(frame2, height=13)
schd2.grid(column=2, row=1, rowspan=13, sticky=(N, S, E, W))
schd3 = Listbox(frame2, height=13)
schd3.grid(column=3, row=1, rowspan=13, sticky=(N, S, E, W))
schd4 = Listbox(frame2, height=13)
schd4.grid(column=4, row=1, rowspan=13, sticky=(N, S, E, W))
schd5 = Listbox(frame2, height=13)
schd5.grid(column=5, row=1, rowspan=13, sticky=(N, S, E, W))
# 设置字体
ft = font.Font(family='Microsoft YaHei', size=12, weight='normal')
# 为了便捷将五天的课表作为一list
daylist = (schd1, schd2, schd3, schd4, schd5)
# 设置课表
for day in daylist:
day['selectmode'] = 'extended'
day['exportselection'] = False
for num in range(1, 14):
day.insert(0, '无课')
day['font'] = ft
day['width'] = 10
# 课表下四个按钮和一个combobox
# 改变颜色
def chcolor():
print("\033[1;42m\033[0m")
butdont = ttk.Button(frame2, text='不上课', command=chcolor).grid(column=3, row=15)
# 清除选择
butusel = ttk.Button(frame2, text='清除选择').grid(column=4, row=15)
Label(frame2, text='选择课表').grid(column=0, row=15, columnspan=2, sticky=W)
outputlist = ttk.Combobox(frame2, textvariable=['待选', 'ok'])
outputlist.grid(column=1, row=15, columnspan=2, sticky=E)
# frame1
# 左侧的内容
frame1 = ttk.Frame(root, borderwidth=5, relief="sunken")
frame1.grid(column=0, row=0)
# 设置上方的label
Label(frame1, text='输入课程信息').grid(column=0, row=0, columnspan=2)
# 输入课程号的Label和entry
Label(frame1, text='课程号:').grid(column=0, row=1, sticky=W)
coursenum = StringVar()
inputcoursenum = ttk.Entry(frame1, textvariable=coursenum, width=13)
inputcoursenum.grid(column=1, row=1, sticky=E)
# 已选课程的listbox
Label(frame1, text='已选课程').grid(column=0, row=3, sticky=W)
courselist = Listbox(frame1, height=8, width=13, exportselection=False)
courselist.grid(column=0, row=4, columnspan=2, rowspan=8, sticky=W)
def isrtcrs(): # 加入课程
k = 0
num = 0
print(num, courselist.size())
while num courselist.size():
if inputcoursenum.get() == courselist.get(num):
k = 1
num += 1
if k == 0:
courselist.insert(0, inputcoursenum.get())
crslst[inputcoursenum.get()] = []
crslst_in_num[inputcoursenum.get()] = []
print(crslst)
print(crslst_in_num)
return
def delcrs(): # 删除课程
# print(courselist.curselection())
# print(courselist.get(courselist.curselection()))
crslst_in_num.pop(courselist.get(courselist.curselection()))
crslst.pop(courselist.get(courselist.curselection()))
courselist.delete(courselist.curselection())
print(crslst)
print(crslst_in_num)
return
def shwtm(*args): # 当选中一门课程,时间listbox改为对应的时间
print('here')
timelist.delete(0, END)
tmlst = crslst[courselist.get(courselist.curselection())]
if len(tmlst) != 0:
for time in tmlst:
timelist.insert(END, time)
return
# courselist的选中事件
courselist.bind('ListboxSelect', shwtm)
# 加入课程和删除课程的按钮
addcourse = ttk.Button(frame1, text='加入课程', command=isrtcrs).grid(column=0, row=2)
deletcourse = ttk.Button(frame1, text='删除课程', command=delcrs).grid(column=0, row=12)
# 已选课程的时间listbox
Label(frame1, text='时间列表').grid(column=1, row=3, sticky=E)
timelist = Listbox(frame1, height=8, width=13, exportselection=False)
timelist.grid(column=1, row=4, columnspan=2, rowspan=8, sticky=E)
def isrttim(): # 加入时间
num = 1
time = []
time_in_num = []
strofod = ''
for day in daylist:
if len(day.curselection()) != 0:
strofod = numtoch[num]
temp = day.curselection()
for cls in temp:
strofod = strofod + ' ' + str(cls + 1)
time_in_num.append((num - 1) * 13 + (cls + 1))
num += 1
if len(strofod) != 0:
time.append(strofod)
strofod = []
if len(time) != 0:
timelist.insert(END, time)
crslst[courselist.get(courselist.curselection())].append(time)
crslst_in_num[courselist.get(courselist.curselection())].append(time_in_num)
print(crslst)
print(crslst_in_num)
return
def deltim(): # 删除时间
print(timelist.curselection())
for sel in timelist.curselection():
crslst[courselist.get(courselist.curselection())].pop(sel)
crslst_in_num[courselist.get(courselist.curselection())].pop(sel)
timelist.delete(timelist.curselection())
print(crslst)
print(crslst_in_num)
return
# 加入时间和删除时间的按钮
addtime = ttk.Button(frame1, text='加入时间', command=isrttim).grid(column=1, row=2)
delelttime = ttk.Button(frame1, text='删除时间', command=deltim).grid(column=1, row=12)
def creatcourselist(): # 建立课程列文本文档
with open('slist.txt', 'w') as slist:
slist.writelines(str(len(crslst_in_num)) + '\n') # 课程数
for crs, tlst in crslst_in_num.items():
slist.writelines(crs + '\n') # 课程名
slist.writelines(str(len(tlst)) + '\n') # 可选时间数
for time in tlst:
slist.writelines(str(len(time)) + '\n') # 某一可选时间的节数
for n in time:
slist.writelines(str(n) + '\n') # 第几节
return
def showoutput(): # 在右侧的选择课表combobox里显示可选课表
filename_list = []
for filename_e in os.listdir('output'):
filename_list.append(filename_e)
outputlist['values'] = filename_list
return
def arrg(): # 排课
print('here')
creatcourselist()
for filename_e in os.listdir('output'):
os.remove('output/' + filename_e)
arrange.arrangement_mod()
showoutput()
return
# 当用户选择某一可选课表时,展示课表
def showcrslist(*args):
print(outputlist.get())
for filename_e in os.listdir('output'): # 寻找所选项对应的文件
if filename_e == outputlist.get():
with open('output/' + filename_e, 'r') as f_r: # 打开对应的文件
nr = f_r.readlines() # 按行读取内容
k = 0
for day in daylist:
day.delete(0, END) # 删除课表的原有内容
for num in range(1, 14):
# print(nr[k])
# 加入新的内容
if nr[k] == '0\n':
day.insert(END, '')
else:
day.insert(END, nr[k].strip())
k += 1
break # 完成之后退出循环
return
# 可选课表combobox选择事件
outputlist.bind('ComboboxSelected', showcrslist)
# 排课的按钮
run = ttk.Button(frame1, text='排课', command=arrg).grid(column=0, row=13, columnspan=2)
# frame_search
frame_s = ttk.Frame(root, borderwidth=5, relief='sunken')
frame_s.grid(column=2, row=0)
ttk.Label(frame_s, text='搜索课程').grid(column=0, row=0, columnspan=2)
ttk.Label(frame_s, text='课程号:').grid(column=0, row=1, sticky=E)
crs_num = StringVar()
crs_search = ttk.Entry(frame_s, textvariable=crs_num, width=12).grid(column=1, row=1, sticky=E)
search_crs = ttk.Button(frame_s, text='搜索').grid(column=0, row=2)
addup = ttk.Button(frame_s, text='加入').grid(column=1, row=2)
ttk.Label(frame_s, text='课程号:').grid(column=0, row=3, columnspan=2, sticky=W)
ttk.Label(frame_s, text='课程名:').grid(column=0, row=4, columnspan=2, sticky=W)
ttk.Label(frame_s, text='上课时间:').grid(column=0, row=5, columnspan=2, sticky=W)
root.mainloop()
numpy.random包可以实现这一功能。numpy包是python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比python自身的嵌套列表结构要高效的多,同时该结构也可以用来表示矩阵。
from
numpy
import
random
randarray
=
random.random(size=(2,4))
random函数接收需要生成随机矩阵的形状的元组作为唯一参数。上面的代码将会返回一个两行四列的随机矩阵,随机数的值位于0到1之间,矩阵是numpy.array类型。除了random函数外,还有生成整数随机矩阵的函数randint等等。
没有办法交互,用ftplib吧
# 例:FTP编程
from ftplib import FTP
ftp = FTP()
timeout = 30
port = 21
('192.168.1.188',port,timeout) # 连接FTP服务器
('UserName','888888') # 登录
print # 获得欢迎信息
('file/test') # 设置FTP路径
list = # 获得目录列表
for name in list:
print(name) # 打印文件名字
path = 'd:/data/' + name # 文件保存路径
f = open(path,'wb') # 打开要保存文件
filename = 'RETR ' + name # 保存FTP文件
# 保存FTP上的文件
# 删除FTP文件
('STOR '+filename, open(path, 'rb')) # 上传FTP文件
# 退出FTP服务器
是最开始的两行还是其中符合条件的两行?
这里只写最初的两行
f = open(文件路径)
s = f.readlines()
two_lines = s[:2]
其中two_lines就是最开始两行
您好朋友,很高兴为您解答问题!
把print()函数里的end参数修改成空格,python两行就会同时出现结果。
例:1 print("hello world",end=‘ ’)
2 print("hello again")
输出:1 hello world hello again
扩展知识:
python里print()函数的定义
print() 方法用于打印输出,最常见的一个函数。
希望我的回答能够对您有所帮助,谢谢!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流