求助:tkinter问题

Aiden_ZGM 发布于 08/14 13:33
阅读 52
收藏 0

系统环境 windows10

使用软件pyCharm

导入模块:tkinter,openpyxl

目前代码可以正常运行, 没有报错信息,但是在运行后弹出窗口选择excel文件后,无法进入Entry控件的编辑模式,只能将窗口最小化后打开,这时才会恢复正常可输入状态,实在不知道是哪里出的问题,求大神帮忙解惑

代码没有结果错误提示

 

加载中
0
A
Aiden_ZGM
from tkinter import *
from tkinter import filedialog
from openpyxl import load_workbook


excel_win = Tk()
excel_win.title('excel_operating')
filename_all = filedialog.askopenfilename(filetypes=[('xlsx', '*.xlsx')])  # ('xls', '*.xls')
excel_file = load_workbook(filename_all)
excel_file.guess_types = True
sheet = excel_file.active



def openexcel(sheet):
    '''获取第一行字段'''
    rows = []
    cows = []
    first_row = []
    for row in sheet.iter_rows():
        rows.append(row)
    for col in sheet.iter_cols():
        cows.append(col)
    max_cow = len(cows) # 最大列数
    for i in range(max_cow):
        first_row.append(rows[0][i].value)
    return first_row

label_title = openexcel(sheet)

def label_func():
    '''设置标签及输入框'''
    i = 0
    for label_name in label_title:
        Label(excel_win, text=label_name).grid(row=i)
        label_title[i] = Entry(excel_win)
        label_title[i].grid(row=i, column=1)
        i += 1


def getmessge():
    '''获取输入内容'''
    messges =[]
    i = 0
    for getmessge in label_title:
        messges.append(getmessge.get())
        i += 1
    sheet.append(messges)
    excel_file.save(filename_all)
    for label_name in label_title:
        label_name.delete(0, END)



def main():
    label_func()
    Button(excel_win, text="提交", command=getmessge).grid(row=len(label_title) + 1)
    excel_win.mainloop()

if __name__ == '__main__':
    main()

补充一下源代码

 

 

0
老汉-憨憨
老汉-憨憨

excel_win = Tk()
excel_win.title('excel_operating')
excel_win.withdraw()

filename_all = filedialog.askopenfilename(filetypes=[('xlsx', '*.xlsx')])  # ('xls', '*.xls')


excel_win.update()
excel_win.deiconify()

A
Aiden_ZGM
回复 @老汉-憨憨 : 十分感谢,真的十分感谢
老汉-憨憨
老汉-憨憨
临时学习的,现学现买,但是可以解决你的问题
老汉-憨憨
老汉-憨憨
我不懂 python 但是我发现去掉 filedialog.askopenfilename 这一句是没有问题的, 所以在这个打开文件的过程中 先隐藏窗口 打开文件后在显示出来就好了。
返回顶部
顶部