求教Python大佬调用问题
本帖最后由 zoenbo 于 2021-5-11 10:50 编辑想让PY里调用同目录下config.pyc或者config.json或者其他python可以直接读取的文件内容,求助大佬们...
主要目的就是在打包成EXE后,有些内容需要改,不用再次打包
1。我想把“组合框1”里的'北京', '上海', '天津'选项放在文件里,choices里的选项从文件里读取
2。想把“组合框2”里的'男', '女', '老', '少'选项放在文件里,choices里的选项从文件里读取
3。“组合框3”里的'美女', '帅哥', '丑八怪'选项放在文件里,choices里的选项从文件里读取
4。'''注释那块想调用一段代码,比如在文件里
def on_combobox(self, event):
return event.GetSelection() + 1
# -*- coding:utf-8 -*-
import wx
class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='TEST', size=(400, 300),name='frame',style=541072384)
self.启动窗口 = wx.Panel(self)
self.Centre()
self.组合框1 = wx.ComboBox(self.启动窗口,value='',pos=(34, 26),name='comboBox',choices=['北京', '上海', '天津'],style=16)
self.组合框1.SetSize((112, 23))
self.组合框2 = wx.ComboBox(self.启动窗口,value='',pos=(34, 71),name='comboBox',choices=['男', '女', '老', '少'],style=16)
self.组合框2.SetSize((116, 26))
self.组合框3 = wx.ComboBox(self.启动窗口,value='',pos=(37, 114),name='comboBox',choices=['美女', '帅哥', '丑八怪'],style=16)
self.组合框3.SetSize((119, 27))
'''
想在这块加一段代码,从文件里读取
'''
class myApp(wx.App):
defOnInit(self):
self.frame = Frame()
self.frame.Show(True)
return True
if __name__ == '__main__':
app = myApp()
app.MainLoop() 参数放在JSON文件里,然后用load()读取就行了 咸鱼灭 发表于 2021-5-10 22:53
参数放在JSON文件里,然后用load()读取就行了
大佬,JSON文件是不是这样写呢?
{"AA": "'北京', '上海', '天津'", "BB": "'男', '女', '老', '少'", "CC": "'美女', '帅哥', '丑八怪'","DD":" def on_combobox(self, event):
return event.GetSelection() + 1"}
在PY里该怎么调用这些值呢? 查一下exec函数的用法。例子:
>>> data = "a=5"
>>> exec(data)
>>> a
5
>>> # -*- coding:utf-8 -*-
import json
import wx
class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='TEST', size=(400, 300), name='frame', style=541072384)
self.Config = {}
self.initJsonObj()
self.启动窗口 = wx.Panel(self)
self.Centre()
self.组合框1 = wx.ComboBox(self.启动窗口, value='', pos=(34, 26), name='comboBox', choices=self.Config["组合框1"],
style=16)
self.组合框1.SetSize((112, 23))
self.组合框2 = wx.ComboBox(self.启动窗口, value='', pos=(34, 71), name='comboBox', choices=self.Config["组合框2"],
style=16)
self.组合框2.SetSize((116, 26))
self.组合框3 = wx.ComboBox(self.启动窗口, value='', pos=(37, 114), name='comboBox', choices=self.Config["组合框3"],
style=16)
self.组合框3.SetSize((119, 27))
def initJsonObj(self):
# 设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错
f = open("config.json", encoding="utf-8")
self.Config = json.load(f)
'''
想在这块加一段代码,从文件里读取
'''
class myApp(wx.App):
def OnInit(self):
self.frame = Frame()
self.frame.Show(True)
return True
if __name__ == '__main__':
app = myApp()
app.MainLoop()
config.json:
{
"组合框1": ["北京", "上海", "天津"],
"组合框2": ["男", "女", "老", "少"],
"组合框3": ["美女", "帅哥", "丑八怪"]
} 本帖最后由 zoenbo 于 2021-5-11 09:10 编辑
Loker 发表于 2021-5-11 08:39
# -*- coding:utf-8 -*-
import json
大佬简直不要太帅,非常OK
'''
想在这块加一段代码,从文件里读取
'''
大佬,注释这一块我想整体替换成这个咋弄呢?就是下边这段也要让它从JSON里读取
def on_combobox(self, event):
return event.GetSelection() + 1 zoenbo 发表于 2021-5-11 08:50
Loker 发表于 2021-5-11 08:39
# -*- coding:utf-8 -*-
import json
看不明白你的需求 Loker 发表于 2021-5-11 09:24
看不明白你的需求
我想把这段放到那个'''注释的那一块怎么调用呢?
def on_combobox(self, event):
return event.GetSelection() + 1
比如把注释那块删除,我要放这段代码,这段代码也是在json文件里 zoenbo 发表于 2021-5-11 10:01
我想把这段放到那个'''注释的那一块怎么调用呢?
def on_combobox(self, event):
return ev ...
从json文件里读取代码应该不行,只能读取文本。 Loker 发表于 2021-5-11 10:05
从json文件里读取代码应该不行,只能读取文本。
嗯,好的,这样就行了。
页:
[1]