在程序 运行 时更改源文件
Changing source file while program is running
我正在尝试通过编辑源文件(在 Python 3.4.2、Windows 8.1 下)来动态更改程序的行为。我的程序是一个 tkinter
GUI,带有一个将两个值相加的按钮,但我希望能够更改按钮的行为。我目前正在尝试通过编辑源文件(例如,将加法更改为减法)、保存它,然后单击其回调函数 import
是源文件的按钮来执行此操作。我希望我的代码更改反映在 运行 GUI 中,而无需退出并重新启动程序。我还希望此 import
仅重新编译我更改的行,而不是整个文件。
程序,reload0.py
:
import time
import serial
import sys
import os
import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog
try:
import Tkinter # Python 2
import ttk
except ImportError:
import tkinter as Tkinter # Python 3
import tkinter.ttk as ttk
mGui = Tk()
mGui.title("GUI")
mGui.geometry('400x200+100+100')
def mOp():
num1 = value1.get()
num2 = value2.get()
Op=num1+num2
name1.set('Sum')
name2.set(Op)
def mReLoad():
import reload0.py
mGui.update()
def mCheck():
if len(name1.get()) == 0:
name1.set('name1')
mGui.update()
if (len(name2.get()) == 0):
name2.set('name2')
mGui.update()
try:
print(value1.get())
except ValueError:
value1.set(0)
mGui.update()
try:
print(value2.get())
except ValueError as ValE:
value2.set(0)
mGui.update()
print(ValE)
value1 = DoubleVar()
value2 = DoubleVar()
name1 = StringVar()
name2 = StringVar()
mButtonSave = Button(mGui, text = "Operation", command = mOp, fg = 'Red').place(x=150,y=80)
mButtonLoad = Button(mGui, text = "ReLoad Operation", command = mReLoad, fg = 'Red').place(x=150,y=110)
mButtonLoad = Button(mGui, text = "Check", command = mCheck, fg = 'Red').place(x=150,y=140)
tText1 = Entry(mGui, textvariable = name1).place(x=10,y=80)
tText2 = Entry(mGui, textvariable = name2).place(x=10,y=100)
vText1 = Entry(mGui, textvariable = value1).place(x=10,y=120)
vText2 = Entry(mGui, textvariable = value2).place(x=10,y=140)
为了您更改按钮功能的目的,有比更改源代码更简单的方法,而且如评论所述,这是不可能的。
从我看到的另一个问题来看,您是 python 编程的新手。我建议先花一些时间学习一些基本教程,以了解 python 和一些编程概念。
例如
import reload.py
应该只是
import reload
https://wiki.python.org/moin/BeginnersGuide/NonProgrammers
读一本书,做一些例子,等你来回答这里的问题,祝你好运!
我正在尝试通过编辑源文件(在 Python 3.4.2、Windows 8.1 下)来动态更改程序的行为。我的程序是一个 tkinter
GUI,带有一个将两个值相加的按钮,但我希望能够更改按钮的行为。我目前正在尝试通过编辑源文件(例如,将加法更改为减法)、保存它,然后单击其回调函数 import
是源文件的按钮来执行此操作。我希望我的代码更改反映在 运行 GUI 中,而无需退出并重新启动程序。我还希望此 import
仅重新编译我更改的行,而不是整个文件。
程序,reload0.py
:
import time
import serial
import sys
import os
import tkinter as tk
from tkinter import ttk
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog
try:
import Tkinter # Python 2
import ttk
except ImportError:
import tkinter as Tkinter # Python 3
import tkinter.ttk as ttk
mGui = Tk()
mGui.title("GUI")
mGui.geometry('400x200+100+100')
def mOp():
num1 = value1.get()
num2 = value2.get()
Op=num1+num2
name1.set('Sum')
name2.set(Op)
def mReLoad():
import reload0.py
mGui.update()
def mCheck():
if len(name1.get()) == 0:
name1.set('name1')
mGui.update()
if (len(name2.get()) == 0):
name2.set('name2')
mGui.update()
try:
print(value1.get())
except ValueError:
value1.set(0)
mGui.update()
try:
print(value2.get())
except ValueError as ValE:
value2.set(0)
mGui.update()
print(ValE)
value1 = DoubleVar()
value2 = DoubleVar()
name1 = StringVar()
name2 = StringVar()
mButtonSave = Button(mGui, text = "Operation", command = mOp, fg = 'Red').place(x=150,y=80)
mButtonLoad = Button(mGui, text = "ReLoad Operation", command = mReLoad, fg = 'Red').place(x=150,y=110)
mButtonLoad = Button(mGui, text = "Check", command = mCheck, fg = 'Red').place(x=150,y=140)
tText1 = Entry(mGui, textvariable = name1).place(x=10,y=80)
tText2 = Entry(mGui, textvariable = name2).place(x=10,y=100)
vText1 = Entry(mGui, textvariable = value1).place(x=10,y=120)
vText2 = Entry(mGui, textvariable = value2).place(x=10,y=140)
为了您更改按钮功能的目的,有比更改源代码更简单的方法,而且如评论所述,这是不可能的。
从我看到的另一个问题来看,您是 python 编程的新手。我建议先花一些时间学习一些基本教程,以了解 python 和一些编程概念。
例如
import reload.py
应该只是
import reload
https://wiki.python.org/moin/BeginnersGuide/NonProgrammers
读一本书,做一些例子,等你来回答这里的问题,祝你好运!