Files
F6--/其它系统脚本/周报数据处理.ipynb
T
2026-01-30 11:28:35 +08:00

246 lines
26 KiB
Plaintext

{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## 源数据\n",
"# NGV明细--门店开户月、对应留存门店数、G门店数三个数据\n",
"# ● 操作一:增加开户月一列(标黄色);\n",
"# ● 操作二:通过数据透视表进行数据分析,通过”门店阶段“、”开户月“、”G状态“分析前三列数据;"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"ename": "TclError",
"evalue": "expected integer but got \"bold\"",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mTclError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-4-20e82e86f60a>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 41\u001b[0m \u001b[0mwindow\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mWindow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"周报数据处理\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0msg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m''\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlayout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mborder_width\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0msize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m580\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m460\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmodal\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 42\u001b[0m \u001b[1;32mwhile\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 43\u001b[1;33m \u001b[0mevent\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalues\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mwindow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 44\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mevent\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0msg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mWIN_CLOSED\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mevent\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'Exit'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 45\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\PySimpleGUI\\PySimpleGUI.py\u001b[0m in \u001b[0;36mread\u001b[1;34m(self, timeout, timeout_key, close)\u001b[0m\n\u001b[0;32m 10073\u001b[0m \u001b[1;32mwhile\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10074\u001b[0m \u001b[0mWindow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_root_running_mainloop\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTKroot\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m> 10075\u001b[1;33m \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_read\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtimeout_key\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtimeout_key\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 10076\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mresults\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10077\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mresults\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0mDEFAULT_WINDOW_SNAPSHOT_KEY\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\PySimpleGUI\\PySimpleGUI.py\u001b[0m in \u001b[0;36m_read\u001b[1;34m(self, timeout, timeout_key)\u001b[0m\n\u001b[0;32m 10144\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10145\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mShown\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m> 10146\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_Show\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 10147\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10148\u001b[0m \u001b[1;31m# if already have a button waiting, the return previously built results\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\PySimpleGUI\\PySimpleGUI.py\u001b[0m in \u001b[0;36m_Show\u001b[1;34m(self, non_blocking)\u001b[0m\n\u001b[0;32m 9884\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mUseDefaultFocus\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 9885\u001b[0m \u001b[1;31m# -=-=-=-=-=-=-=-=- RUN the GUI -=-=-=-=-=-=-=-=- ##\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 9886\u001b[1;33m \u001b[0mStartupTK\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9887\u001b[0m \u001b[1;31m# If a button or keyboard event happened but no results have been built, build the results\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 9888\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLastKeyboardEvent\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLastButtonClicked\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\PySimpleGUI\\PySimpleGUI.py\u001b[0m in \u001b[0;36mStartupTK\u001b[1;34m(window)\u001b[0m\n\u001b[0;32m 16864\u001b[0m \u001b[1;31m# root.protocol(\"WM_DELETE_WINDOW\", MyFlexForm.DestroyedCallback())\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 16865\u001b[0m \u001b[1;31m# root.bind('<Destroy>', MyFlexForm.DestroyedCallback())\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m> 16866\u001b[1;33m \u001b[0m_convert_window_to_tk\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mwindow\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 16867\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 16868\u001b[0m \u001b[1;31m# Make moveable window\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\PySimpleGUI\\PySimpleGUI.py\u001b[0m in \u001b[0;36m_convert_window_to_tk\u001b[1;34m(window)\u001b[0m\n\u001b[0;32m 16751\u001b[0m \u001b[0mInitializeResults\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mwindow\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 16752\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m> 16753\u001b[1;33m \u001b[0mPackFormIntoFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mwindow\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmaster\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwindow\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 16754\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 16755\u001b[0m \u001b[0mwindow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTKroot\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconfigure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpadx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mwindow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mMargins\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpady\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mwindow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mMargins\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\PySimpleGUI\\PySimpleGUI.py\u001b[0m in \u001b[0;36mPackFormIntoFrame\u001b[1;34m(form, containing_frame, toplevel_form)\u001b[0m\n\u001b[0;32m 15989\u001b[0m \u001b[0mlabeled_frame\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0melement\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mWidget\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtk\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLabelFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtk_row_frame\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtext\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0melement\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTitle\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrelief\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0melement\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mRelief\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 15990\u001b[0m \u001b[0melement\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTKFrame\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlabeled_frame\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m> 15991\u001b[1;33m \u001b[0mPackFormIntoFrame\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0melement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabeled_frame\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtoplevel_form\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 15992\u001b[0m \u001b[0mexpand\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfill\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrow_should_expand\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrow_fill_direction\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_add_expansion\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0melement\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrow_should_expand\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrow_fill_direction\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 15993\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0melement\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mVerticalAlignment\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\PySimpleGUI\\PySimpleGUI.py\u001b[0m in \u001b[0;36mPackFormIntoFrame\u001b[1;34m(form, containing_frame, toplevel_form)\u001b[0m\n\u001b[0;32m 16016\u001b[0m \u001b[0mlabeled_frame\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconfigure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mforeground\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0melement\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTextColor\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 16017\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfont\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m> 16018\u001b[1;33m \u001b[0mlabeled_frame\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconfigure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfont\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfont\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 16019\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0melement\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTitleLocation\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 16020\u001b[0m \u001b[0mlabeled_frame\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconfigure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlabelanchor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0melement\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTitleLocation\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\tkinter\\__init__.py\u001b[0m in \u001b[0;36mconfigure\u001b[1;34m(self, cnf, **kw)\u001b[0m\n\u001b[0;32m 1644\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mallowed\u001b[0m \u001b[0mkeyword\u001b[0m \u001b[0marguments\u001b[0m \u001b[0mcall\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0mkeys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1645\u001b[0m \"\"\"\n\u001b[1;32m-> 1646\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_configure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'configure'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcnf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1647\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1648\u001b[0m \u001b[0mconfig\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconfigure\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\tkinter\\__init__.py\u001b[0m in \u001b[0;36m_configure\u001b[1;34m(self, cmd, cnf, kw)\u001b[0m\n\u001b[0;32m 1634\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcnf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1635\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getconfigure1\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_flatten\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_w\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcmd\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'-'\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mcnf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1636\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtk\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_flatten\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_w\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcmd\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_options\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcnf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1637\u001b[0m \u001b[1;31m# These used to be defined in Widget:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1638\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mTclError\u001b[0m: expected integer but got \"bold\""
]
}
],
"source": [
"import pandas as pd\n",
"import PySimpleGUI as sg\n",
"import os\n",
"import platform\n",
"import sys\n",
"from pathlib import Path\n",
"# 切换工作路径\n",
"if platform.system() == \"Windows\":\n",
" root = os.getcwd()\n",
"else:\n",
" root = os.path.sep.join(sys.argv[0].split(os.path.sep)[:-1]) # 仅适用于pyinstaller 打包应用是有效\n",
" root = Path(root)\n",
"sg.theme('Default1') # 设置主题\n",
"os.chdir(root) # os.chdir() 方法用于改变当前工作目录到指定的路径。\n",
"root_path = Path(os.path.abspath('.')) # 取文件绝对路径os.path.abspath()\n",
"\n",
"\n",
"\"\"\" 其它top功能区 \"\"\"\n",
"sg.Frame('{:22}'.format('1.请选择处理的文件类型:'), , font=f'Any bold')\n",
"\n",
"\"\"\" 数据上传窗口 \"\"\"\n",
"layout = [\n",
" [sg.Text('请选择处理类型:'),sg.Combo(['智能推荐数据', '短信数据', '线上化数据'],size=(33, 1), key='-selective type-'),sg.Submit('确定', key='-selective ok-')]\n",
"]\n",
"\"\"\" 主窗口运行 \"\"\"\n",
"window = sg.Window(\"周报数据处理\", [[sg.Frame('', layout, border_width=3,size=(580,460))]], modal=True)\n",
"while True:\n",
" event, values = window.read()\n",
" if event == sg.WIN_CLOSED or event == 'Exit':\n",
" break \n",
" if event == '-selective ok-' and values['-selective type-'] ==\"智能推荐数据\":\n",
" print(values['-selective type-'])\n",
" \n",
"\n",
"window.close()"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "module 'PySimpleGUI' has no attribute 'timedata'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-1-6fe14a87746f>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 49\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mevent\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0msg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mWIN_CLOSED\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 50\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 51\u001b[1;33m \u001b[0mcurrent_time\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtimedata\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'time'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 52\u001b[0m \u001b[0mwindow\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'_TIME_'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcurrent_time\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 53\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mindex\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata_type\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mAttributeError\u001b[0m: module 'PySimpleGUI' has no attribute 'timedata'"
]
},
{
"ename": "",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。请查看单元格中的代码,以确定故障的可能原因。有关详细信息,请单击 <a href='https://aka.ms/vscodeJupyterKernelCrash'>此处</a>。有关更多详细信息,请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
]
}
],
"source": [
"\n",
"import PySimpleGUI as sg\n",
"\n",
"data_type = ['智能推荐数据', '短信数据', '线上化数据']\n",
"selected_data = ''\n",
"\n",
"# 左侧区域\n",
"left_layout = [\n",
" [sg.Text('当前时间:')],\n",
" [sg.Text('加载时间', size=(15, 1), font=('Helvetica', 18), justification='center', key='_TIME_')],\n",
" [sg.Text('请选择需要处理的数据类型:')],\n",
" [sg.Radio(text, 'data_type', default=(True if index == 0 else False), k=f'_TYPE_{index}') for index, text in enumerate(data_type)],\n",
" [sg.Button('提交', size=(10, 1), bind_return_key=True)],\n",
" [sg.Text('_'*80)],\n",
"]\n",
"\n",
"# 中间的top切换区域\n",
"top_layouts = [\n",
" sg.TabGroup([\n",
" [\n",
" sg.Tab('智能推荐数据',\n",
" [[sg.Text('这是智能推荐数据的top页面')]], key='_TAB_RECOMMENDATION_'),\n",
" sg.Tab('短信数据',\n",
" [[sg.Text('这是短信数据的top页面')]], key='_TAB_SMS_'),\n",
" sg.Tab('线上化数据',\n",
" [[sg.Text('这是线上化数据的top页面')]], key='_TAB_ONLINE_'),\n",
" ]\n",
" ],\n",
" tab_location='topleft',\n",
" enable_events=True,\n",
" key='_TOP_TABGROUP_')\n",
"]\n",
"\n",
"# 右侧的信息提示区\n",
"information_layout = [\n",
" [sg.Text('当前操作:', font=('Helvetica', 18), justification='left', size=(25, 1))],\n",
" [sg.Output(size=(60, 10), font=('Helvetica', 12), background_color='white', text_color='black', key='_INFO_OUTPUT_')]\n",
"]\n",
"\n",
"layout = [\n",
" [sg.Column(left_layout, element_justification='c')],\n",
" [sg.Column(top_layouts, element_justification='c')],\n",
" [sg.Column(information_layout, element_justification='c')],\n",
"]\n",
"\n",
"window = sg.Window('PySimpleGUI page demo', layout, size=(800, 600), resizable=True)\n",
"\n",
"while True:\n",
" event, values = window.read(timeout=1000)\n",
" if event == sg.WIN_CLOSED:\n",
" break\n",
" current_time = sg.timedata()['time']\n",
" window['_TIME_'].update(current_time)\n",
" for index in range(len(data_type)):\n",
" if values[f'_TYPE_{index}']:\n",
" selected_data = data_type[index]\n",
" break\n",
" if event == '提交':\n",
" window['_INFO_OUTPUT_'].print('[INFO] 当前选择的数据类型:%s' % selected_data)\n",
" if selected_data == '':\n",
" window['_INFO_OUTPUT_'].print('[WARNING] 未选择操作类型,请先选择操作类型!')\n",
" elif selected_data == '智能推荐数据':\n",
" window['_TOP_TABGROUP_'].select('_TAB_RECOMMENDATION_')\n",
" elif selected_data == '短信数据':\n",
" window['_TOP_TABGROUP_'].select('_TAB_SMS_')\n",
" elif selected_data == '线上化数据':\n",
" window['_TOP_TABGROUP_'].select('_TAB_ONLINE_')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n",
"import PySimpleGUI as sg\n",
"\n",
"# 定义第一个Column的内容\n",
"column1 = [[sg.Text('Data Types')],\n",
" [sg.Radio('Type 1', 'data_type', default=True),\n",
" sg.Radio('Type 2', 'data_type'),\n",
" sg.Radio('Type 3', 'data_type'),\n",
" sg.Radio('Type 4', 'data_type')]]\n",
"\n",
"# 定义第二个Column的内容\n",
"column2 = [[sg.Text('Data Type 1', font=('Helvetica', 15), justification='center')],\n",
" [sg.Frame('Top 1', [[sg.Button('Process', size=(10, 2))]]),\n",
" sg.Frame('Top 2', [[sg.Button('Process', size=(10, 2))]]),\n",
" sg.Frame('Top 3', [[sg.Button('Process', size=(10, 2))]])]]\n",
"\n",
"# 定义第三个Column的内容\n",
"column3 = [[sg.Text('Progress', font=('Helvetica', 15), justification='center')],\n",
" [sg.ProgressBar(100, orientation='h', size=(20, 20), key='progressbar')]]\n",
"\n",
"# 创建布局\n",
"layout = [[sg.Column(column1), sg.Column(column2), sg.Column(column3)]]\n",
"\n",
"# 创建窗口\n",
"window = sg.Window('Data Processing', layout)\n",
"\n",
"while True:\n",
" event, values = window.read()\n",
"\n",
" # 支持窗口关闭\n",
" if event == sg.WINDOW_CLOSED:\n",
" break\n",
"\n",
" # 处理数据类型选择\n",
" if event.startswith('Type '):\n",
" window['Data Type 1'].update(event)\n",
"\n",
" # 处理进度更新\n",
" if event == 'Process':\n",
" for i in range(100):\n",
" window['progressbar'].update(i + 1)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "F6processing",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.4"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}