鱼C论坛

 找回密码
 立即注册
查看: 2012|回复: 3

[已解决]在函数中怎么访问entry中的内容

[复制链接]
发表于 2022-11-23 10:40:03 | 显示全部楼层 |阅读模式

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

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

x
我想将以下代码mian函数中的那一坨代码放到win_tk()函数中去该怎么改啊,
如果直接放进去的话run_com()函数中etyText.get()就没办法获取到entry中的内容
import tkinter as tk
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import *


def win_tk():
    pass


def select_com():
    etyText.set(askopenfilename())


def run_com():
    filePath = etyText.get()
    showinfo('Tips', filePath)


if __name__ == '__main__':
    root = tk.Tk()
    root.attributes('-alpha', 0.9)
    root.geometry('700x200+400+200')
    etyText = tk.StringVar()
    lb = tk.Label(root, font=('Arial', 10), text=' File Path :')
    ety = tk.Entry(root, font=('Arial', 10), textvariable=etyText, width=80)
    btnSelect = tk.Button(root, font=('Arial', 10), text='  Select  ', command=select_com)
    btnRun = tk.Button(root, font=('Arial', 10), fg='white', bg='gray', text='   Run   ', command=run_com)

    lb.grid(row=0, column=0)
    ety.grid(row=0, column=1)
    btnSelect.grid(row=0, column=2)
    btnRun.grid(row=1, column=1)
    tk.mainloop()




import tkinter as tk
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import *


def win_tk():
    root = tk.Tk()
    root.attributes('-alpha', 0.9)
    root.geometry('700x200+400+200')
    etyText = tk.StringVar()
    lb = tk.Label(root, font=('Arial', 10), text=' File Path :')
    ety = tk.Entry(root, font=('Arial', 10), textvariable=etyText, width=80)
    btnSelect = tk.Button(root, font=('Arial', 10), text='  Select  ', command=select_com)
    btnRun = tk.Button(root, font=('Arial', 10), fg='white', bg='gray', text='   Run   ', command=run_com)

    lb.grid(row=0, column=0)
    ety.grid(row=0, column=1)
    btnSelect.grid(row=0, column=2)
    btnRun.grid(row=1, column=1)
    tk.mainloop()


def select_com():
    etyText.set(askopenfilename())


def run_com():
    filePath = etyText.get()
    showinfo('Tips', filePath)


if __name__ == '__main__':
    win_tk()
最佳答案
2022-11-23 13:21:21
import tkinter as tk
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import *

def select_com():
    etyText . set(askopenfilename())

def run_com():
    filePath = etyText.get()
    showinfo('Tips', filePath)

def win_tk():
    global etyText                          # 添加此句,把 etyText 置为全局变量
    root = tk.Tk()
    root.attributes('-alpha', 0.9)
    root.geometry('700x200+400+200')
    etyText = tk.StringVar()
    lb = tk.Label(root, font=('Arial', 10), text=' File Path :')
    ety = tk.Entry(root, font=('Arial', 10), textvariable=etyText, width=80)
    btnSelect = tk.Button(root, font=('Arial', 10), text='  Select  ', command=select_com)
    btnRun = tk.Button(root, font=('Arial', 10), fg='white', bg='gray', text='   Run   ', command=run_com)

    lb.grid(row=0, column=0)
    ety.grid(row=0, column=1)
    btnSelect.grid(row=0, column=2)
    btnRun.grid(row=1, column=1)
    tk.mainloop()

if __name__ == '__main__':
    win_tk()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-23 12:50:32 | 显示全部楼层
本帖最后由 ZhKQYu 于 2022-11-23 12:53 编辑
import tkinter as tk
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import *
from functools import partial


def win_tk():
    root = tk.Tk()
    root.attributes('-alpha', 0.9)
    root.geometry('700x200+400+200')
    etyText = tk.StringVar()
    lb = tk.Label(root, font=('Arial', 10), text=' File Path :')
    ety = tk.Entry(root, font=('Arial', 10), textvariable=etyText, width=80)
    # 两种方法都行
    # btnSelect = tk.Button(root, font=('Arial', 10), text='  Select  ', command=partial(select_com, etyText))
    btnSelect = tk.Button(root, font=('Arial', 10), text='  Select  ', command=lambda: select_com(etyText))
    btnRun = tk.Button(root, font=('Arial', 10), fg='white', bg='gray', text='   Run   ', command=partial(run_com, etyText))
    # btnRun = tk.Button(root, font=('Arial', 10), fg='white', bg='gray', text='   Run   ', command=lambda: run_com(etyText))

    lb.grid(row=0, column=0)
    ety.grid(row=0, column=1)
    btnSelect.grid(row=0, column=2)
    btnRun.grid(row=1, column=1)
    tk.mainloop()


def select_com(etyText):
    etyText.set(askopenfilename())


def run_com(etyText):
    filePath = etyText.get()
    showinfo('Tips', filePath)


if __name__ == '__main__':
    win_tk()

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
lengyue869 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

发表于 2022-11-23 12:52:39 | 显示全部楼层
较小的改动:改造函数,用函数参数传递所需要处理的对象。若有必要使用全局变量也行。 根据需要返回适当的对象。

较大的改动:用OOP面向对象的方式,改写和实现。


评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
lengyue869 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

发表于 2022-11-23 13:21:21 | 显示全部楼层    本楼为最佳答案   
import tkinter as tk
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import *

def select_com():
    etyText . set(askopenfilename())

def run_com():
    filePath = etyText.get()
    showinfo('Tips', filePath)

def win_tk():
    global etyText                          # 添加此句,把 etyText 置为全局变量
    root = tk.Tk()
    root.attributes('-alpha', 0.9)
    root.geometry('700x200+400+200')
    etyText = tk.StringVar()
    lb = tk.Label(root, font=('Arial', 10), text=' File Path :')
    ety = tk.Entry(root, font=('Arial', 10), textvariable=etyText, width=80)
    btnSelect = tk.Button(root, font=('Arial', 10), text='  Select  ', command=select_com)
    btnRun = tk.Button(root, font=('Arial', 10), fg='white', bg='gray', text='   Run   ', command=run_com)

    lb.grid(row=0, column=0)
    ety.grid(row=0, column=1)
    btnSelect.grid(row=0, column=2)
    btnRun.grid(row=1, column=1)
    tk.mainloop()

if __name__ == '__main__':
    win_tk()

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
lengyue869 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 01:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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