- 论坛徽章:
- 4
|
本帖最后由 ssfjhh 于 2013-01-08 11:16 编辑
第一次写出图形界面的程序,没学图形编程的时候以为很简单,几行代码就能搞定的事,没想到代码却这么长,也不知道是不是因为自己水平太次,贴出来求路过的给提点意见。还没有编译出独立运行的exe文件,明天继续折腾。
另外,在entry框中现实提示文本不知道怎么实现
例如,网页上的用户名输入框中,显示灰色的“请在此输入用户名”,点击entry框的时候,这些个字符却消失,等待用户输入。
#程序中并没有使用到re模块,但是如果不导入re模块,.py文件能够正常执行,但是编译却会出错,求解。
#我在网上下载的别人写的硬盘整数分区计算器只有一个20k的文件,为什么我用python编译出的diskinter.exe却有1.67M,整个文件夹体积有13.5M,
#这差别也太大了,怎么才能编译才能只有一个exe文件?并且把体积给削减一些?
#看了下cxfreeze -h帮助,找到办法了,只需要在编译的时候加一个 --no-copy-deps参数,编译出来的就是单独的一个exe文件,体积只有1.6M,
#但是依然比20K大很多。- from tkinter import Tk, Entry, StringVar, Radiobutton
- from tkinter.ttk import Frame, Label
- import re
- class diskinter(Frame):
-
- def __init__(self, parent):
- Frame.__init__(self, parent)
-
- self.parent = parent
- self.format = StringVar()
- self.inputGB = StringVar()
- self.outputMB = StringVar()
- self.initUI()
- def initUI(self):
- self.parent.title('硬盘整数分区计算器')
- self.parent.resizable(False, False)
- self.parent.iconbitmap(r'D:\desktop\diskinter\disk.ico')
- self.pack()
- self.parent.geometry('260x80+300+300')
- self.columnconfigure(1, weight = 1)
- self.columnconfigure(2)
- lbl1 = Label(self, text = '磁盘格式:')
- lbl1.grid(pady = 4)
- lbl2 = Label(self, text = '分区大小:')
- lbl2.grid(row = 1, pady = 4)
- lbl3 = Label(self, text = '输入大小:')
- lbl3.grid(row = 2, pady = 4)
- #self.outputMB.set(0)
- self.inentry = Entry(self, textvariable = self.inputGB)
- self.inentry.grid(row = 1, column = 1, columnspan = 2)
- self.outentry = Entry(self, state = 'readonly', textvariable = self.outputMB)
- self.outentry.grid(row = 2, column = 1, columnspan = 2)
- self.inentry.bind('<KeyRelease>', self.keypress)
- lbl4 = Label(self, text = 'GB')
- lbl4.grid(pady = 4, row = 1, column = 3)
- lbl5 = Label(self, text = 'MB')
- lbl5.grid(pady = 4, row = 2, column = 3)
- self.format.set('NTFS')
- ntfsrb = Radiobutton(self,
- variable = self.format,
- text = 'NTFS',
- value = 'NTFS',
- command = self.caculator)
- fat32rb = Radiobutton(self,
- variable = self.format,
- text = 'FAT32',
- value = 'FAT32',
- command = self.caculator)
- ntfsrb.grid(row = 0, column = 1)
- fat32rb.grid(row = 0, column = 2)
- def caculator(self):
- try:
- gbnum = int(self.inputGB.get())
- except:
- gbnum = 0
- if self.format.get() == 'NTFS':
- mbnum = int(int(gbnum*1024/7.84423828125+1)*7.84423828125+1)
- if self.format.get() == 'FAT32':
- mbnum = int(gbnum*1028-4)
- mbnum = 0 if gbnum <= 0 else mbnum
- self.outputMB.set(mbnum)
- return mbnum
- def keypress(self, event = None):
- textin = str(self.inentry.get())
- textin = ''.join(i for i in textin if i in '0123456789')
- try:
- self.inputGB.set(int(textin))
- except:
- pass
- return self.caculator()
- def main():
- root = Tk()
- app = diskinter(root)
- root.mainloop()
- if __name__ == '__main__':
- main()
复制代码 |
|