鱼C论坛

 找回密码
 立即注册
查看: 9067|回复: 10

用PY怎么做图形界面,并执行相应的程序?

[复制链接]
发表于 2015-10-10 11:20:57 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 不坏不修 于 2015-10-10 11:24 编辑

如我想做个图形界面:你想做什么后有三个选项也就是三个按钮?每日,每周,每月,当按每日按钮或每周及每月按钮是执行相应的PY程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-11 17:19:23 | 显示全部楼层
不知道你想怎么设计,复杂的话用wxPython吧,一般得话自带的tkinter能应付吧,你试试下面代码有没有你想的功能或者思路。
  1. from tkinter import*
  2. import tkinter as tk
  3. from tkinter.messagebox import askquestion
  4. from tkinter.messagebox import showerror
  5. from tkinter.filedialog import asksaveasfilename
  6. from tkinter.filedialog import askopenfile
  7. class Denlu():
  8.     def __init__(self,root):
  9.         '''Init Form'''
  10.         self.root = root
  11.         self.frameTop()
  12.         self.frameBottom()
  13.     def frameTop(self):
  14.         """Creat To Frame"""
  15.         self.top_label = tk.Label(self.root,text='用户登陆',fg = 'green',bg='white',font=('宋体',20))                                    
  16.         self.top_label.grid(row=0,column=0,padx=20,pady=3)
  17.     def frameBottom(self):
  18.         """Create Bottom Frame"""
  19.         self.bottom = tk.LabelFrame(self.root)
  20.         self.bottom.grid(row=1,column=0,padx=20,pady=3)
  21.         self.bottom_lab0 = tk.Label(self.bottom,text='用户名:',font=('宋体',15))
  22.         self.bottom_lab0.grid(row=0,column=0,padx=20,pady=3,sticky='e')
  23.         self.bottom_lab1 = tk.Label(self.bottom,text='密  码:',font=('宋体',15))
  24.         self.bottom_lab1.grid(row=1,column=0,padx=20,pady=3,sticky='e')
  25.         self.bottom_entry_var_0 = StringVar()
  26.         self.bottom_entry_0 = tk.Entry(self.bottom,textvariable=self.bottom_entry_var_0)
  27.         self.bottom_entry_0.grid(row=0,column=1,padx=20,pady=3)
  28.         self.bottom_entry_var_1 = StringVar()
  29.         self.bottom_entry_1 = tk.Entry(self.bottom,textvariable=self.bottom_entry_var_1,show='*')
  30.         self.bottom_entry_1.grid(row=1,column=1,padx=20,pady=3)
  31.         self.bottom_cbtn_int_0 = IntVar()
  32.         self.bottom_cbtn_0 = tk.Checkbutton(self.bottom,variable=self.bottom_cbtn_int_0,text='记住密码',font=('宋体',10))
  33.         self.bottom_cbtn_0.grid(row=2,column=1,padx=20,pady=3,sticky='w')                                       
  34.         self.bottom_btn_0 = tk.Button(self.bottom,text='登陆',relief=RIDGE,bd=4,width=10\
  35.                                           ,font=('宋体',12),command=self.print_nima)#你可以添加其他的函数等
  36.         self.bottom_btn_0.grid(row=3,column=1,padx=20,pady=3)
  37.     def print_nima(self):
  38.         """btn callback"""
  39.         print(self.bottom_entry_var_0.get())
  40.         print(self.bottom_entry_var_1.get())
  41.         print(self.bottom_cbtn_int_0.get())

  42. def fun_fuck():
  43.     if __name__ == '__main__':
  44.         """main loop"""
  45.         root2 = tk.Tk()
  46.         root2.title('FUCK')
  47.         Denlu(root2)
  48.         root2.mainloop()
  49. class Zouqi():
  50.     def __init__(self,root):
  51.         """Init Form"""
  52.         self.root = root
  53.         self.frameTop()
  54.     def frameTop(self):
  55.         """top frame"""
  56.         btn_toplevel = tk.Button(self.root,text='开始',command=self.toplevel_click)
  57.         btn_toplevel.grid(row=0,column=0,padx=40,pady=30,sticky='wesn')
  58.     def toplevel_click(self):
  59.         """toplevel click"""
  60.         func_list = ['每日','每周','每月','每年']
  61.         self.frm_toplevel = tk.Toplevel(self.root)
  62.         self.frm_toplevel.title('选择您要观看的变化')
  63.         for (count,func_name) in enumerate(func_list):
  64.             btn = tk.Button(self.frm_toplevel,width=25,text=func_name)
  65.             btn.grid(row=count//2,column=2*(count%2),padx=5,pady=5)
  66.             btn.bind('<Button-1>',self.hhhh)#我整个hhh函数当例子。
  67.     def hhhh(self,event):
  68.         fff = event.widget['text']
  69.         if fff == '每日':
  70.             #写下你想执行的内容或者PY程序,这里我简单的以一打开文件的程序替代下你想要的PY程序。
  71.             openfile = askopenfile(filetypes=(('所有文件','*.'),('All files','*.*')))
  72.             #。。。。。。。。。。。。。。。。
  73.         if fff == '每周':
  74.             #写下你想执行的内容或者PY程序。
  75.             #这里我简单的以是否保存(是,出现保存窗口,否出现错误提示框)程序替代下你想要的PY程序。
  76.             if askquestion('保存','是否保存',parent=self.frm_toplevel) == 'yes':
  77.                 saveasfile = asksaveasfilename()
  78.             else:
  79.                 try:showerror('error!','show error!',parent=self.frm_toplevel)
  80.                 except:pass
  81.         if fff == '每月':
  82.             #我们创建一登陆界面,当然你也可以写你自己的PY!
  83.             fun_fuck()
  84.         self.frm_toplevel.destroy()

  85. if __name__ == '__main__':
  86.     '''main loop '''
  87.     root = tk.Tk()
  88.     root.title('进入XXOO界面')
  89.     Zouqi(root)
  90.     root.mainloop()
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +5 收起 理由
~风介~ + 5 + 5 + 5 辛苦了!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2015-10-12 07:41:59 | 显示全部楼层
夕阳游龙 发表于 2015-10-11 17:19
不知道你想怎么设计,复杂的话用wxPython吧,一般得话自带的tkinter能应付吧,你试试下面代码有没有你想的 ...

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

使用道具 举报

 楼主| 发表于 2015-10-12 07:53:47 | 显示全部楼层
本帖最后由 不坏不修 于 2015-10-12 07:56 编辑

YXJT.png
夕阳游龙 发表于 2015-10-11 17:19
不知道你想怎么设计,复杂的话用wxPython吧,一般得话自带的tkinter能应付吧,你试试下面代码有没有你想的 ...


是不是我的PY版本低了
这是你发的代码运行的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-12 13:01:34 | 显示全部楼层
不坏不修 发表于 2015-10-12 07:53
是不是我的PY版本低了
这是你发的代码运行的结果

嗯,我的是python3.4的,你的是python2.7的,不兼容!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-12 16:10:25 | 显示全部楼层
夕阳游龙 发表于 2015-10-12 13:01
嗯,我的是python3.4的,你的是python2.7的,不兼容!

我都是用2.7.10编的小程序,你的这个我怎么处理能用呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-12 18:23:49 | 显示全部楼层
不坏不修 发表于 2015-10-12 16:10
我都是用2.7.10编的小程序,你的这个我怎么处理能用呢

你应该自己该成Python2.7的语法,我改了下,用python2.5可以运行,很容易出现乱码,python2.5不支持中文变量,我用# -*- coding: utf8 -*-来转换,但是并不万能!!!改后代码如下:
  1. # -*- coding: utf8 -*-
  2. from Tkinter import*
  3. import Tkinter as tk
  4. from  tkMessageBox import askquestion
  5. from  tkMessageBox import showerror
  6. from  tkFileDialog import asksaveasfilename
  7. from  tkFileDialog import askopenfile
  8. class Denlu():
  9.     def __init__(self,root):
  10.         '''Init Form'''
  11.         self.root = root
  12.         self.frameTop()
  13.         self.frameBottom()
  14.     def frameTop(self):
  15.         """Creat To Frame"""
  16.         self.top_label = tk.Label(self.root,text='用户登陆',fg = 'green',bg='white',font=('Tempus Sans ITC',20))                                    
  17.         self.top_label.grid(row=0,column=0,padx=20,pady=3)
  18.     def frameBottom(self):
  19.         """Create Bottom Frame"""
  20.         self.bottom = tk.LabelFrame(self.root)
  21.         self.bottom.grid(row=1,column=0,padx=20,pady=3)
  22.         self.bottom_lab0 = tk.Label(self.bottom,text='用户名:',font=('Tempus Sans ITC',15))
  23.         self.bottom_lab0.grid(row=0,column=0,padx=20,pady=3,sticky='e')
  24.         self.bottom_lab1 = tk.Label(self.bottom,text='密    码:',font=('Tempus Sans ITC',15))
  25.         self.bottom_lab1.grid(row=1,column=0,padx=20,pady=3,sticky='e')
  26.         self.bottom_entry_var_0 = StringVar()
  27.         self.bottom_entry_0 = tk.Entry(self.bottom,textvariable=self.bottom_entry_var_0)
  28.         self.bottom_entry_0.grid(row=0,column=1,padx=20,pady=3)
  29.         self.bottom_entry_var_1 = StringVar()
  30.         self.bottom_entry_1 = tk.Entry(self.bottom,textvariable=self.bottom_entry_var_1,show='*')
  31.         self.bottom_entry_1.grid(row=1,column=1,padx=20,pady=3)
  32.         self.bottom_cbtn_int_0 = IntVar()
  33.         self.bottom_cbtn_0 = tk.Checkbutton(self.bottom,variable=self.bottom_cbtn_int_0,text='记住密码',font=('Tempus Sans ITC',10))
  34.         self.bottom_cbtn_0.grid(row=2,column=1,padx=20,pady=3,sticky='w')                                       
  35.         self.bottom_btn_0 = tk.Button(self.bottom,text='登陆',relief=RIDGE,bd=4,width=10\
  36.                                           ,font=('Tempus Sans ITC',12),command=self.print_nima)#你可以添加其他的函数等
  37.         self.bottom_btn_0.grid(row=3,column=1,padx=20,pady=3)
  38.     def print_nima(self):
  39.         """btn callback"""
  40.         print self.bottom_entry_var_0.get()
  41.         print self.bottom_entry_var_1.get()
  42.         print self.bottom_cbtn_int_0.get()

  43. def fun_fuck():
  44.     if __name__ == '__main__':
  45.         """main loop"""
  46.         root2 = tk.Tk()
  47.         root2.title('FUCK')
  48.         Denlu(root2)
  49.         root2.mainloop()
  50. class Zouqi():
  51.     def __init__(self,root):
  52.         """Init Form"""
  53.         self.root = root
  54.         self.frameTop()
  55.     def frameTop(self):
  56.         """top frame"""
  57.         btn_toplevel = tk.Button(self.root,text='开始',command=self.toplevel_click)
  58.         btn_toplevel.grid(row=0,column=0,padx=40,pady=30,sticky='wesn')
  59.     def toplevel_click(self):
  60.         """toplevel click"""
  61.         func_list = ['Day','Week','Month','Year']
  62.         self.frm_toplevel = tk.Toplevel(self.root)
  63.         self.frm_toplevel.title('选择您要观看的变化')
  64.         for (count,func_name) in enumerate(func_list):
  65.             btn = tk.Button(self.frm_toplevel,width=25,text=func_name)
  66.             btn.grid(row=count//2,column=2*(count%2),padx=5,pady=5)
  67.             btn.bind('<Button-1>',self.hhhh)#我整个hhh函数当例子。
  68.     def hhhh(self,event):
  69.         fff = event.widget['text']
  70.         if fff == 'Month':
  71.             #写下你想执行的内容或者PY程序,这里我简单的以一打开文件的程序替代下你想要的PY程序。
  72.             openfile = askopenfile(filetypes=(('所有文件','*.'),('All files','*.*')))
  73.             #。。。。。。。。。。。。。。。。
  74.         if fff == 'Week':
  75.             #写下你想执行的内容或者PY程序。
  76.             #这里我简单的以是否保存(是,出现保存窗口,否出现错误提示框)程序替代下你想要的PY程序。
  77.             if askquestion('保存','是否保存',parent=self.frm_toplevel) == 'yes':
  78.                 saveasfile = asksaveasfilename()
  79.             else:
  80.                 try:showerror('error!','show error!',parent=self.frm_toplevel)
  81.                 except:pass
  82.         if fff == 'Day':
  83.             #我们创建一登陆界面,当然你也可以写你自己的PY!
  84.             fun_fuck()
  85.         try:self.frm_toplevel.destroy()
  86.         except:pass

  87. if __name__ == '__main__':
  88.     '''main loop '''
  89.     root = tk.Tk()
  90.     root.title('进入XXOO界面')
  91.     Zouqi(root)
  92.     root.mainloop()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-13 07:14:28 | 显示全部楼层
夕阳游龙 发表于 2015-10-12 18:23
你应该自己该成Python2.7的语法,我改了下,用python2.5可以运行,很容易出现乱码,python2.5不支持中文 ...

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

使用道具 举报

发表于 2015-10-14 00:11:54 | 显示全部楼层
支持一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-7 11:54:50 | 显示全部楼层
夕阳游龙 发表于 2015-10-11 17:19
不知道你想怎么设计,复杂的话用wxPython吧,一般得话自带的tkinter能应付吧,你试试下面代码有没有你想的 ...

辛苦了~~~参考了你的程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-7 19:53:46 | 显示全部楼层
用 tkinter
把你的程序写成模块,import 导入就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 00:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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