Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的变量在通过Tkinter按钮定义后未写入文件_Python_Button_Tkinter - Fatal编程技术网

Python中的变量在通过Tkinter按钮定义后未写入文件

Python中的变量在通过Tkinter按钮定义后未写入文件,python,button,tkinter,Python,Button,Tkinter,大家好。我在使用Tkinter(Python模块)制作GUI时遇到了这个问题。也就是说,我给按钮分配了一个命令,这是一个函数,包含程序在点击按钮后应该做的事情,这个命令就是,当按下按钮时,改变一个变量。好吧,只要修改它就行了,但当我试图将该值合并为字符串以进一步写入文件时,它根本不起作用。这是代码 import os from tkinter import * root = Tk() gui = "" _path = "" def ButtonA_c

大家好。我在使用Tkinter(Python模块)制作GUI时遇到了这个问题。也就是说,我给按钮分配了一个命令,这是一个函数,包含程序在点击按钮后应该做的事情,这个命令就是,当按下按钮时,改变一个变量。好吧,只要修改它就行了,但当我试图将该值合并为字符串以进一步写入文件时,它根本不起作用。这是代码

import os
from tkinter import *

root = Tk()

gui = ""
_path = ""

def ButtonA_command():
    gui = " -w"
    print(gui)

def ButtonB_command():
    gui = " "
    print(gui)

def ButtonC_command():
    bat_file = open("fatty.bat", "w")
    bat_file.write("pyinstaller --onefile" + gui + " " + EntryA.get())
    bat_file.close()
    
    



ButtonA = Button(root, text= "GUI", command= ButtonA_command)
ButtonB = Button(root, text= "CMD e GUI", command= ButtonB_command)
ButtonC = Button(root, text= "Criar", command= ButtonC_command)

EntryA = Entry(root)


ButtonA.pack()
ButtonB.pack()

EntryA.pack()

ButtonC.pack()

root.mainloop()

您需要如下定义您的函数。否则,您将在函数范围内创建局部变量
gui

def ButtonA_command():
    global gui
    gui = " -w"
    print(gui)

def ButtonB_command():
    global gui
    gui = " "
    print(gui)

我知道这里发生了什么。运行ButtonA_command()时,会出现一个名为gui的新变量(因此有两个名为gui的变量,一个在函数中,一个在函数外)。使用
global gui
作为每个函数的第一行,它应该可以工作(在我的电脑上也可以)。 编辑:其他评论员的速度快了一点:)

你需要写:

global gui

否则,在任何函数内部,它会将其视为该函数的一个新局部变量。

到底什么不起作用?连接还是写文件?我不知道什么不起作用。我所知道的是,当我去查看我想要创建的文件时,变量值根本就不在那里,它似乎对我有用。它写入值(EntryA.get())连接。是不是程序似乎工作正常,但以后找不到该文件?它可能是你当前的工作目录。我想我找到了问题所在!您先单击ButtonA,然后单击ButtonB,然后单击ButtonC,对吗?