gtk2编写图形界面计算器

合集下载

c语言课程设计GTK+计算器的实现

c语言课程设计GTK+计算器的实现

目录设计背景 (2)GTK+简介 (2)程序实现 (3)界面的构建 (3)窗口的实现 (3)按钮的实现 (4)输入框的实现 (5)回调函数的实现 (5)数字键 (6)小数点 (6)运算符 (7)等号 (7)清除键 (8)退格键 (8)键盘事件 (8)心得体会 (10)参考文献 (10)设计背景GTK+简介GTK+一开始是作为流行的GNU图像处理程序GIMP的一部分产生的,逐渐成为功能强大最受欢迎的工具包之一,因为变成了一个独立的项目。

它是一个函数库,提供了一组已经制作好的被称为构件的组件,可以通过简单易懂的函数调用把这些组件和应用程序逻辑组合在一起,从而极大的简化了GUI的创建。

GTK+使用自由的LGPL许可证,它完全是用C语言编写的,绝大多数GTK也是用C语言编写的,也有许多语言绑定可以在C++,Python,PHP,Java中使用它。

GTK本身是建立在一组其它函数库上的,例如他需要Glib提供底层数据结构、类型、线程支持、事件循环和动态加载。

Glib和GObject提供了一组数据类型、函数和宏的标准替代集来进行内存管理和处理常见任务,从而实现跨平台开发,意味着GTK+能够可靠的移植到其他平台和体系结构上。

Glib还定义了一些方便的常量:#define FALSE 0#define TRUE !FALSE这些附加的数据类型基本上是标准C语言数据类型的代替,以及用于确保跨平台字节长度不变。

●gint、guint、gchar、guchar、glong、gulong、gfloat和gdouble是标准C语言数据类型的简单代替●gpointer与(void *)同义●gboolean 用于表示布尔类型的值,它事对int的一个包装●gint8、guint8、gint16、guint16、gint32和guint32是保证字节长度的有符合和无符号类型尽管GTK+是完全用C语言编写的,但是它通过GObjiect库支持对象和面向对象编程,这个库通过宏来支持对象继承和多态。

利用Tkinter(python3.6)实现一个简单计算器

利用Tkinter(python3.6)实现一个简单计算器

利⽤Tkinter(python3.6)实现⼀个简单计算器前⾔上机实践课程开始了,嗯,⽼师来了之后念了下PPT,然后说:开始做吧.........然后就开始了Python的GUI之路,以前没接触过PYthon的可视化界⾯(虽然这样很不明智)但是现在做起来感觉写⼩⼯具还挺⽅便的,当时搜到的第⼀个库便是Tkinter就直接开始写了后来发现QT很不错的样⼦,下个实验就⽤QT吧.然后关于Tkinter(python3.6)ennn.....有的命名不规范.......⾸先对于python中栈的实现是通过list的⽅式模拟pop()出栈,append()⼊栈⾸先我们来看⼀下常⽤的TKinter提供的核⼼⼩构件类:⼩构件类描述Button按钮Canvas结构化图形,⽤于绘制图形,创建图形编辑器以及实现⾃定义⼩构件类Checkbutton单击复选按钮在值之间切换Entry⽂本域或称⽂本框Frame容器(可包含其他的⼩构件)Label显⽰⽂本或图像Menu显⽰下拉菜单和弹出菜单的菜单栏Menubutton下拉菜单的菜单按钮Message类似于标签显⽰⽂本,但能⾃动将⽂本放在给定宽⾼内Radiobutton单选按钮Text格式化的⽂本显⽰,⽀持内嵌图⽚和⽂本,允许⽤不同风格和属性显⽰和编辑⽂本开始⼀个窗⼝做⼀个可视化的东西,⾸先想到的坑定是窗⼝吧窗⼝⼜有很多构成,⽐如title,ico,size,bd,菜单等.import tkinterimport osfrom tkinter import *class Calculator(object):"""计算器"""def __init__(self):=() #实例化.title('计算器').minsize(370,460).maxsize(400,400)#也可以⽤.resizable(0, 0)来禁⽌调节⼤⼩.iconbitmap(os.getcwd()+'/favicon.ico')def start(self):.mainloop()if __name__ == '__main__':NewCalculator=Calculator()NewCalculator.start()这⾥就⽣成了⼀个基本的窗⼝,对于其中的mainloop()的作⽤如果我们删除它,窗⼝会⼀闪⽽过,它就是为了防⽌这种情况⾯板显⽰做成计算器之后坑定要先是计算结果,这⾥就需要⽣成显⽰⾯板当然我们也会很⾃然地联想到显⽰内容的字体设置等需求,具体事例在下⾯代码....import tkinter.font as tkfont....#字体设置self.EntryFont=tkfont.Font(,size=13)self.ButtonFont=tkfont.Font(,size=12)#⾯板显⽰self.count=tkinter.StringVar()self.count.set('0')bel=bel(,bg='#EEE9E9',bd='3',fg='black',anchor='center',font=self.EntryFont,textvariable=self.count)bel.place(y=10,width=380,height=40)....其中tkinter中⾯板Lable有⼀些参数,这⾥⽤到的基本上也可以满⾜常见的需求了其中bg是背景⾊,fg是前景⾊,改变内容的颜⾊,anchor是定位内容在⾯板中的位置,如下图⽅向⽰例表格nw n new center esw s se关于⾯板以及后边的Button的定位,可以⽤很多⽅式,place可以准确的定位,也可以⽤pack(),grid()对于计算器place是更好的,能够准确定位每⼀个控件其中字体也可以直接在Lable()加参数,例如font=("Arial,6")textvariable相当于“监听”的作⽤,绑定tkinter中的string,就可以⽤set()的⽅式⽅便的改变⾯板的内容按钮,输⼊框设置按钮,输⼊框的参数和⾯板⾥⾯的是相似的self.NumButton=tkinter.Button(master=,relief=GROOVE,bg='#EE6A50',text=self.ButtonList[0],font=self.ButtonFont,command=self.clear)self.NumButton.place(x=30,y=80,width=70,height=55)self.shiEntry=Entry(self.baoxianTk,validate='key',validatecommand=(self.checkNum,'%P'),font=self.EntryFont)self.shiEntry.place(x=190,y=80)⼀样的是通过bg等参数设置基础的样式,只不过这⾥会通过command绑定事件,类似于JQ中的.click这⾥的place也是为了能够准确定位才使⽤的,其中的relief代表着Button的样式relief=FLAT or GROOVE or RAISED or RIDGE or SOLID or SUNKEN其中删除输⼊框的输⼊内容text.delete(10) #删除索引值为10的值text.delete(10, 20) #删除索引值从10到20之前的值text.insert(0, END) #删除所有值输⼊限制在设计功能的时候我们可能需要⽤户输⼊数字等,这⾥可以进⾏限制⼀下Button参数中validate指定什么时候执⾏validatecommand绑定的函数,使⽤%P可以实时获取输⼊的内容当validate选项指定为key的时候,有任何的输⼊操作都会被拦截,这个时候返回True⽩能量才会输⼊到Entry self.checkNum=self.baoxianTk.register(self.validateNum)self.gerenEntry=Entry(self.baoxianTk,validate='key',validatecommand=(self.checkNum,'%P'),font=self.EntryFont)self.gerenEntry.place(x=190,y=190)#验证是否输⼊数字def validateNum(self,content):if content.isdigit() and int(content)>=0 or content=="":return Trueelse:return FalsevalidateNum()函数可以根据⾃⼰的需求进⾏更改启⽤验证validate选项可以设置的值有:名称事件focus当 Entry 组件获得或失去焦点的时候验证focusin当 Entry 组件获得焦点的时候验证focusout当 Entry 组件失去焦点的时候验证key当输⼊框被编辑的时候验证all当出现上边任何⼀种情况的时候验证拓展符号设计这个⼩计算器中我增加了%,/,sqrt三个符号对于他们的实现我的思路是添加到⾯板之前检测⼀下传⼊的button内容如果是这三种符号则做出对应的处理其中需要注意如果是多位数或者带有符号式⼦不能直接进⾏变换,需要判断你要转置的数字的位数,我的具体⽅式如下def checkList(self):result=0locate=-1listSum=0for length in range(0,len(self.inputlist)):if re.findall(r'[-+*/]',str(self.inputlist[length])):result=1if length>locate:locate=lengthelse:passif result==1:for i in range(locate+1,len(self.inputlist)):listSum+=int(self.inputlist[i])*(10**(len(self.inputlist)-i-1))else:for j in range(0,len(self.inputlist)):listSum+=int(self.inputlist[j])*(10**(len(self.inputlist)-j-1))return listSum,locate#添加buttondef addButton(self,button):if button==self.ButtonList[18]:listSum,locate=self.checkList()if locate==-1:self.inputlist=[str(round(eval('1/'+str(listSum)),5))]else:for k in range(locate+1,len(self.inputlist)):del self.inputlist[k]self.inputlist.append(str(round(eval('1/'+str(listSum)),5)))elif button==self.ButtonList[19]:passelif button==self.ButtonList[20]:passelse:self.inputlist.append(button)self.count.set(self.inputlist)关于lambda百度百科:Lambda表达式是Python中⼀类特殊的定义函数的形式,使⽤它可以定义⼀个匿名函数与其它语⾔不同,Python的Lambda表达式的函数体只能有唯⼀的⼀条语句,也就是返回值表达式语句搜索更多⽂章后理解更多,Lambda函数可以说是对按钮起到“call back”的作⽤如果我们不使⽤Lambda进⾏中间函数的延迟回调,在创建按钮的同时command绑定的函数会被调⽤即如下⾯两句代码的区别,第⼆句在进⾏创建时会直接执⾏knobDown函数self.NumButton=tkinter.Button(master=,relief=GROOVE,bg='#BFEFFF',text=self.ButtonList[20], font=self.ButtonFont,command=lambda:self.knobDown(self.ButtonList[20])) self.NumButton=tkinter.Button(master=,relief=GROOVE,bg='#BFEFFF',text=self.ButtonList[20], font=self.ButtonFont,command=self.knobDown(self.ButtonList[20]))更详细的解释可以参考⽂末最后两个⽂章,还是前辈写得好关于单选框本来想实现PPT中给出的⽰例-房贷计算的拓展,但是⼀直这个单选框产⽣BUG就放弃了下⾯的⽰例是从⽹上摘抄过来的,具体的⽹址忘了就是通过variable绑定⼀个IntVar() ,通过.get()⽅式可以获取Radiobutton中value的值#!/usr/bin/env pythonimport tkinterfrom tkinter import *import tkinter.font as tkfontroot=()val=tkinter.IntVar()val.set(0)def func1():if val.get() == 0:label.configure(text='radio 0')else:label.configure(text='radio 1')label = bel(root, text='radio 0')label.pack()r0 = tkinter.Radiobutton(text = 'radio0', variable = val, value = 0)r0.pack()r1 = tkinter.Radiobutton(text = 'radio1', variable = val, value = 1)r1.pack()b = tkinter.Button(root, text='button', command=func1)b.pack()root.mainloop()打包C:\Users\bayi\Desktop\shiyan\progrem(venv) λ pip install pyinstallerC:\Users\bayi\Desktop\shiyan\progrem(venv) λ pyinstaller -F -w -i favicon.ico run.py⼀开始因为代码中的设置ico图标为下⾯代码第⼀⾏windows下打包路径识别有问题,把图标换到⼀个路径短的地⽅修改成绝对路径就OK了(下⾯代码第⼆⾏,exe和ico要放在同⼀个⽬录下self.baoxianTk.icobitmap('favicon.ico')self.baoxianTk.iconbitmap(os.getcwd()+'/favicon.ico')效果预览虽然是现学现卖和对于别⼈的⽼知识,但是成功之后还是挺有成就感的(and我似乎对美⼯要求挑剔........调颜⾊和样式能挑半天,包括以前的那个爬⾍的前端总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。

设计一个图形界面的计算器,完成简单的算术运算-JAVA课程设计

设计一个图形界面的计算器,完成简单的算术运算-JAVA课程设计

设计一个图形界面的计算器,完成简单的算术运算-JAVA课程设计课程设计论文任务书软件学院学院网络工程专业 2006-2 班一、课程设计论文题目设计一个图形界面的计算器,完成简单的算术运算二、课程设计论文工作自09 年 1 月 5 日起至09年 1 月 9 日止。

三、课程设计论文地点: 信息工程学院中心机房四、课程设计论文内容要求:1.本课程设计的目的(1)使学生巩固和提高Java编程技术(2)培养学生掌握程序设计的基本思路和方法;(3)加强学生研发、调试程序的能力;(4)培养学生分析、解决问题的能力;(5)提高学生的科技论文写作能力。

2.课程设计的任务及要求1)任务:1设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算2计算器要有小数点、正负号、求倒数、退格和清零功能2)创新要求:计算器附加有开平方根,平方,立方,判断素数,求log的功能3)课程设计论文编写要求(1)课程设计任务及要求(2)设计思路--工作原理、功能规划(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。

(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。

(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。

(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)7 报告按规定排版打印,要求装订平整,否则要求返工;8 课设报告的装订顺序如下:封面---任务书---中文摘要---目录----正文---附录代码及相关图片(9)严禁抄袭,如有发现,按不及格处理。

4)答辩与评分标准:(1)考勤:10分;(2)程序检查:30分;(3)答辩回答问题:20分(3)课程设计报告:40分;5)参考文献:[1] 耿祥义.《Java 2 实用教程(第三版)》北京清华大学出版社 2006.8[2] 朱福喜.《Java语言程序设计》.北京清华大学出版社.2005[3] 朱福喜,尹为民,余振坤.《Java语言与面向对象程序设计》.武汉武汉大学出版社.20026)课程设计进度安排内容天数地点构思及收集资料7 图书馆编码与调试 5 实验室撰写论文 3 图书馆、实验室学生签名:09 年 01月 05日课程设计论文评审意见(1)考勤(10分):优( )、良( )、中( )、一般( )、差( );(2)程序检查(30分):优( )、良( )、中( )、一般( )、差( );(3)答辩回答问题(20分):优( )、良( )、中( )、一般( )、差( );(4)设计报告(40分):优( )、良( )、中( )、一般( )、差( );评阅人: 职称: 讲师年月日目录一、课设任务及要求 1二、需求分析 2三、设计思路 3四、详细设计 5五、运行调试与分析讨论9六、设计体会与小结14七、参考文献15附录16中文摘要Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。

java图形化界面实现简单计算器

java图形化界面实现简单计算器

java图形化界面实现简单计算器package computer;import java.awt.BorderLayout;public class Compuer extends JFrame {private JPanel contentPane;private JTextField textField;private JTextField textField_1;private JTextField textField_2;private JTextField textField_3;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {//运行程序时,点击按钮输入公式,当点击等于号时显示出计算结果try {Compuer frame = new Compuer();frame.setVisible(true);Time time=new Time();time.setTime(frame.textField_3);Thread thread=new Thread(time);thread.start();}catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public Compuer() {setTitle("\u8BA1\u7B97\u5668");setName("");final StringBuffer s=new StringBuffer();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 412, 448);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);textField = new JTextField();textField.setEnabled(false);textField.setLocale(/doc/9518291727. html,);textField.setForeground(Color.PINK);textField.setText("\u6B22\u8FCE\u4F7F\u7528\u8BA1\u7B97\u5668");textField.setBounds(10, 20, 368, 30);contentPane.add(textField);textField.setColumns(10);textField_1 = new JTextField();//文本框textField_1,显示公式textField_1.setBounds(10, 102, 368, 30);contentPane.add(textField_1);textField_1.setColumns(10);textField_2= new JTextField();//文本框textField_2.显示计算结果textField_2.setBounds(10, 142, 368, 30);contentPane.add(textField_2);textField_2.setColumns(10);textField_3 = new JTextField();//文本框textField_3,显示电子表textField_3.setForeground(new Color(205, 133, 63));textField_3.setBounds(10, 60, 368, 30);contentPane.add(textField_3);textField_3.setColumns(10);//按钮'清零',监听到按钮后清零JButton btnC = new JButton("\u6E05\u96F6");btnC.setForeground(Color.RED);btnC.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {textField_1.setT ext("");textField_2.setT ext("");s.delete(0, s.length());}});btnC.setBounds(10, 182, 183, 44);contentPane.add(btnC);//按钮'退格',监听到按钮后退格JButton button_16 = new JButton("\u9000\u683C");button_16.setForeground(Color.RED);button_16.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.delete(s.length()-1, s.length());String str=s.toString();textField_1.setT ext(str);}button_16.setBounds(193, 182, 185, 44); contentPane.add(button_16);//按钮'*',监听到按钮后显示*JButton button_1 = new JButton("*");button_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('*');String str=s.toString();textField_1.setT ext(str);}});button_1.setBounds(285, 271, 93, 44);contentPane.add(button_1);//按钮'6',监听到按钮后显示6JButton button_2 = new JButton("6");button_2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('6');String str=s.toString();textField_1.setT ext(str);}});button_2.setBounds(193, 271, 93, 44);contentPane.add(button_2);//按钮'5',监听到按钮后显示5JButton button_3 = new JButton("5");button_3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('5');String str=s.toString();textField_1.setT ext(str);}button_3.setBounds(100, 271, 93, 44);contentPane.add(button_3);//按钮'4',监听到按钮后显示4button_4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('4');String str=s.toString();textField_1.setT ext(str);}});button_4.setBounds(10, 271, 93, 44);contentPane.add(button_4);//按钮'-',监听到按钮后显示-JButton button_5 = new JButton("-");button_5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('-');String str=s.toString();textField_1.setT ext(str);}});button_5.setBounds(285, 313, 93, 44); contentPane.add(button_5);//按钮'3',监听到按钮后显示3JButton button_6 = new JButton("3");button_6.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('3');String str=s.toString();textField_1.setT ext(str);}});button_6.setBounds(193, 313, 93, 44); contentPane.add(button_6);//按钮'2',监听到按钮后显示2JButton button_7 = new JButton("2");button_7.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('2');String str=s.toString();textField_1.setT ext(str);}});button_7.setBounds(100, 313, 93, 44); contentPane.add(button_7);//按钮'1',监听到按钮后显示1button_8.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {s.append('1');String str=s.toString();textField_1.setT ext(str);}});button_8.setBounds(10, 313, 93, 44);contentPane.add(button_8);//按钮'+',监听到按钮后显示+JButton button_9 = new JButton("+");button_9.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {s.append('+');String str=s.toString();textField_1.setT ext(str);}button_9.setBounds(285, 355, 93, 44); contentPane.add(button_9);//按钮'=',点击按钮'=',将计算出结果**********************************JButton button_10 = new JButton("=");button_10.setForeground(Color.RED);button_10.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String str=s.toString();String ss=str;String index="[-]|[+]|[/]|[*]";String number[]=str.split(index);int count=number.length;double num[]=new double[count];for(int i=0;i<count;i++){< p="">num[i]=Double.parseDouble(number[i]);}double result=0;if(ss.contains("+")){result=num[0];for(int i=1;i<count;i++){< p="">result+=num[i];}}if(ss.contains("-")){result=num[0];for(int i=1;i<count;i++){< p="">result-=num[i];}if(ss.contains("*")){result=num[0];for(int i=1;i<count;i++){< p="">result*=num[i];}}if(ss.contains("/")){result=num[0];for(int i=1;i<count;i++){< p="">if(num[i]==0){//除数等于0时,显示错误信息textField_2.setT ext("出错");return;}else {result/=num[i];}}}//int i=(int)Math.round(result*100);//result=(double)i/100;textField_2.setT ext(""+result);}});button_10.setBounds(193, 355, 93, 44); contentPane.add(button_10);//按钮'.',监听到按钮后显示。

【最新】gtk,2.0编程范例-推荐word版 (16页)

【最新】gtk,2.0编程范例-推荐word版 (16页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==gtk,2.0编程范例篇一:大家一起用gtk编程1? 写在最前面笔者写做本文的目的,主要是为初学GTK编程的新手们提供一个能够快速上手的学习档案,能够通过自己将所有的代码输入并编译,以达到学习的目的。

同时,也希望它成为一个参考手册,希望GTK中的每一个API都能在本文中找到相应的示例。

笔者将尽力保证所有的代码都是最短小的,这样才能保证大家都有足够的动力去手工输入它。

由于笔者时间及精力有限,不能一次将所有内容呈现给所有读者,因此拟定了一个计划:每天更新一个章节的内容,在笔者的Blog上进行连载,同时会不断地对以前的内容进行修改和完善,因此为了保证大家能够读到最新的内容,请随时关注笔者的Blog:起笔的日子:201X.09.20? 为什么是GTK?为什么不是GTK?笔者不想花费太多的口水去辨证为什么选择GTK而不是其它的东西;任何技术都没有好坏之分,只有使用它的人有能力的强弱之别;笔者认为比较明智的做法是:多编些程序,少做些争论。

? 1、GTK简介GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。

它遵循 LGPL 许可证,所以可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何费用来购买许可证和使用权。

当前,GTK已经被成功地应用到了大量的自由软件及商业软件中,已经取得了很大的成功。

GTK 的创建者:Peter Mattis: petm@Spencer Kimball: spencer@Josh MacDonald: jmacd@? 2、预备? 3、Hello,Dubuntu!嗯,早就急不可待了,让我们开始我们的第一个程序吧!本程序的主要功能:显示一个窗口,并在窗口的标题栏显示字符串"Hello,?????????? --gtk-module --g-fatal-warnings --gtk-debug --gtk-no-debug --gdk-debug --gdk-no-debug --display --sync --name --class? 4、加入按钮和事件处理函数篇二:GTK入门二. GTK简要概述GTK 实质上是一个面向对象的应用程序接口 (API)。

基于GTK+的单词数值计算器

基于GTK+的单词数值计算器

#include <gtk/gtk.h>#include <stdio.h>#include <string.h>GtkWidget *word_entry,*value_entry,*way_entry,*warn_label;//以下为回调函数void closeApp(GtkWidget *window,gpointer data){ //关闭窗口gtk_main_quit();}void button_cal_1(GtkWidget *window,gpointer data){ //计算结果并显示在输出框const gchar *word_input;gchar *word;gint i,j=0,sum=0;word_input=gtk_entry_get_text(GTK_ENTRY(word_entry));for ( i=0 ; i<strlen(word_input) ;i++){if ( *(word_input+i)<'A' || *(word_input+i)>'Z' ){sum=-1;break;}sum+=*(word_input+i)-'A'+1;}gtk_entry_set_text(GTK_ENTRY(value_entry),""); //每次计算先清空显示框内容if ( sum==0 ) {gtk_entry_set_text(GTK_ENTRY(value_entry),"没有输入");}else if ( sum > 0) {gtk_entry_prepend_text(GTK_ENTRY(value_entry),"%");}else {gtk_entry_set_text(GTK_ENTRY(value_entry),"输入含非法字符");}while ( sum > 0){*word=sum%10+'0';sum=sum/10;gtk_entry_prepend_text(GTK_ENTRY(value_entry),word);}}void button_cal_2(GtkWidget *window,gpointer date){const gchar *filename;char s[100];int sum,i;filename=gtk_entry_get_text(GTK_ENTRY(way_entry));if((freopen(filename,"r",stdin))==NULL){gtk_label_set_text(GTK_LABEL(warn_label),"该文件不存在!");}else{freopen("result.txt","w",stdout);while(scanf("%s",s)!=EOF){for(i=0,sum=0;i<strlen(s);i++){sum+=s[i]-'A'+1;}printf("%d%\n",sum);}gtk_label_set_text(GTK_LABEL(warn_label),"恭喜,计算完成!");}}void button_clear1(GtkWidget *window,gpointer date){ //清空输入框和显示框gtk_entry_set_text(GTK_ENTRY(word_entry),"");gtk_entry_set_text(GTK_ENTRY(value_entry),"");}int main(int argc,char *argv[]){GtkWidget *window;GtkWidget *fixed;GtkWidget *word_label,*value_label,*way_label;GtkWidget *ok_button1,*ok_button2,*clear_button;gtk_init(&argc,&argv);fixed=gtk_fixed_new();window=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window),"单词计算器");gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);//窗口显示在桌面中间gtk_window_set_default_size(GTK_WINDOW(window),300,210);//设置窗体大小// gtk_widget_set_usize(fixed,150,150);//以下为连接回调函数g_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(closeApp),NU LL);word_label=gtk_label_new("请输入单词:");value_label=gtk_label_new("该单词的值:");way_label=gtk_label_new("输入文件路径:");warn_label=gtk_label_new("");word_entry=gtk_entry_new();value_entry=gtk_entry_new();way_entry=gtk_entry_new();// gtk_entry_set_visibility(GTK_ENTRY(value_entry),FALSE);ok_button1=gtk_button_new_with_label("计算");ok_button2=gtk_button_new_with_label("计算");clear_button=gtk_button_new_with_label("清空");gtk_editable_set_editable(GTK_EDITABLE(value_entry),FALSE);//输入框不可编辑gtk_widget_set_size_request(value_entry,150,28);//设置输入框长度gtk_widget_set_size_request(word_entry,150,28);gtk_widget_set_size_request(way_entry,230,28);//以下为连接回调函数g_signal_connect(GTK_OBJECT(ok_button1),"clicked",GTK_SIGNAL_FUNC(button_cal_ 1),value_entry);g_signal_connect(GTK_OBJECT(ok_button2),"clicked",GTK_SIGNAL_FUNC(button_cal_ 2),value_entry);g_signal_connect(GTK_OBJECT(clear_button),"clicked",GTK_SIGNAL_FUNC(button_cle ar1),value_entry);//进行界面设计gtk_fixed_put(GTK_FIXED(fixed),word_label,10,30);gtk_fixed_put(GTK_FIXED(fixed),value_label,10,73);gtk_fixed_put(GTK_FIXED(fixed),way_label,10,120);gtk_fixed_put(GTK_FIXED(fixed),word_entry,90,25);gtk_fixed_put(GTK_FIXED(fixed),value_entry,90,65);gtk_fixed_put(GTK_FIXED(fixed),way_entry,10,145);gtk_fixed_put(GTK_FIXED(fixed),ok_button1,250,65);gtk_fixed_put(GTK_FIXED(fixed),ok_button2,250,145);gtk_fixed_put(GTK_FIXED(fixed),clear_button,250,25);gtk_fixed_put(GTK_FIXED(fixed),warn_label,150,180);gtk_container_add(GTK_CONTAINER(window),fixed);gtk_widget_show_all(window);gtk_main();return 0;}。

图形界面编程计算器的实现

图形界面编程计算器的实现

目录1引言 ........................................................................................................................ 11.1课题背景......................................................................................................................................................... 11.2课程设计目的................................................................................................................................................. 21.3课程设计任务................................................................................................................................................. 22系统需求分析.......................................................................................................... 32.1功能需求分析................................................................................................................................................. 32.2 性能需求分析................................................................................................................................................ 33总体设计................................................................................................................. 43.1功能模块分析与设计..................................................................................................................................... 43.2 系统功能模块设计........................................................................................................................................ 44系统功能测试.......................................................................................................... 94.1一个Helloworld窗口.................................................................................................................................... 94.2计算器功能测试......................................................................................................................................... 105 课程设计总结...................................................................................................... 14参考文献................................................................................................................. 141引言1.1课题背景简单的计算器是一种能实现加、减、乘、除等简单运算的工具。

GTK图形界面编程-计算器的实现

GTK图形界面编程-计算器的实现

目录一.课程设计目的 (2)二.课程设计任务与要求 (2)三.功能分析 (3)四.功能模块分析与设计 (3)1.图形界面设计 (4)2.按键处理模块 (4)3.数字键处理模块 (5)4.小数点处理模块 (6)5.加减乘除运算按键处理模块 (6)6.结果按键,即等号处理模块 (7)7.清除模块 (8)五.功能测试 (9)六.课程设计总结 (10)高级C语言实训报告一.课程设计目的现在大多数的计算器都具备+,-,*,/等四则运算的功能。

用计算器来算数显然比用脑袋或用纸笔计算要来得方便。

当我们看到一个很长很大的表达式需要得到结果时,我们就会想到计算器,这样,本程序就是为解决大家基本四则运算的问题而产生的。

主要基于对表达式的分析并利用C进行编程进而实现算法的。

C在程序运行效率、内存使用的可控性和编程的灵活性上均具有较大的优势,与汇编语言和C语言更具有面向对象的优点,我采用Ubuntu Linux操作系统以及GTK+2.0,以达到算法快速有效地执行。

二.课程设计任务与要求1.使用C语言和GTK+图形库进行开发,计算器可以在装有GTK+运行环境的各种操作系统上运行;2.实现标准型计算器上的四则运算功能(参考Windows 7系统标准型计算器);3.根据课程设计进度对程序功能进行扩展:添加捕捉键盘事件功能,通过PC键盘的数字键盘也可以进行输入;为计算器添加存储功能(MR、M+、M-等按键功能),实现完整的标准型计算器;4.实现科学型计算器上的四则运算功能(参考Windows 7系统科学型计算器或Ubuntu 系统基本型计算器)。

本课程设计内容是在Linux平台下开发一个简单的计算器程序,采用GCC编程工具和GTK+2.0工具包等软件为开发工具以及C语言知识实现图形化的计算器程序。

该程序能够实现的对整数的加减乘除和小数的加减乘除。

三.功能分析1.整数之间的加减乘除运算2.小数之间的加减乘除运算3.小数与整数之间的加减乘除运算四.功能模块分析与设计本计算器主要是完成整数之间、小数之间、整数和小数之间的加减乘除的运算,使用GTK+完成界面布局。

3、GTK+2.0 图形化应用程序开发学习笔记(三)—窗体

3、GTK+2.0 图形化应用程序开发学习笔记(三)—窗体

一、初始化GTK+写GTK+程序需要调用gtk_init函数对GTK+ 库函数进行初始化。

1.gtk_init在你程序使用到GTK+工具库之前,必须对它进行初始化。

gtk_init可以初始化GTK+工具库。

gtk_init的参数的指向主函数argc,argv的指针,它可以改变一些不满足GTK+函数要求的命令行参数。

因为gtk_init函数没有返回值,所以如果在初始化过程中发生错误程序就会立即退出。

2.gtk_init_check还有一个GTK+库初始化函数gtk_init_check,它的作用和gtk_init完全相同。

唯一的区别是gtk_init_check有返回值,可以判断初始化是否成功。

二、建立窗口GTK+的构件是GUI的组成部分。

窗口、检查框、按钮和编辑字段都属于构件。

通常将构件和窗口定义为指向GtkWidget结构的指针。

在GTK+中,GtkWidget是用于所有构件和窗口的通用数据类型。

GTK+ 库进行初始化后,大多数应用建立一个主窗口。

在GTK+中,主窗口常常被称为顶层窗口。

顶层窗口不被包含在任何其他窗口内,所以它没有上层窗口。

在GTK+ 中,构件具有父子关系,其中父构件是容器,而子构件则是包含在容器中的构件。

顶层窗口没有父窗口,但可能成为其他构件的容器。

在GTK+中建立构件分两步:建立构件,然后使它可以看得见。

gtk_window_new函数负责建立窗口。

gtk_widget_show函数负责使它成为可见。

3. gtk_window_newgtk_window_new函数用来创建一个新的窗体。

type参数几乎总是GTK_WINDOW_TOPLEVEL,表示用创建标准的窗体。

还有一个可用值是GTK_WINDOW_POPUP表示建立一个具有弹出菜单的窗体,但是不建议大家使用。

我们后面会有GtkMenu来实现菜单的功能。

4. gtk_widget_showgtk_widget_show函数可以显示构件件(如窗体、按钮等)。

可视化计算器c语言代码

可视化计算器c语言代码

可视化计算器c语言代码好的,这是一个简易计算器的可视化界面的示例代码,使用`Graphics.h`库实现:```c#include <graphics.h>#include <conio.h>#include <stdio.h>int main() {int gd = DETECT, gm;initgraph(&gd, &gm, "");int x, y, a, b;char c;// 设置文本和背景颜色为白色setcolor(WHITE);// 设置文本方向为水平方向settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);// 在屏幕上输出提示信息和输入框outtextxy(100, 100, "Enter the first number: ");scanf("%d", &a);outtextxy(100, 150, "Enter the second number: ");scanf("%d", &b);setcolor(YELLOW);outtextxy(100, 200, "Choose an operation (+, -, *, /): ");c = getch();// 根据用户选择的操作计算结果switch (c) {case '+':x = a + b;break;case '-':x = a - b;break;case '*':x = a * b;break;case '/':x = a / b;break;default:printf("Invalid operation.\n");return 0;}// 设置文本颜色为绿色setcolor(GREEN);outtextxy(100, 250, "The result is: ");printf("%d\n", x);getch();// 关闭图形界面closegraph();return 0;}```上述代码使用`initgraph()`函数初始化图形界面,在屏幕上显示了几个提示信息和输入框,然后根据用户选择的操作计算结果并输出。

编程挑战:从零开始编写一个简单的计算器

编程挑战:从零开始编写一个简单的计算器

编程挑战:从零开始编写一个简单的计算器编写一个简单的计算器是一个很好的编程挑战。

计算器可以有基本的加、减、乘和除功能,以及其他一些附加功能,比如取余、平方等。

在这篇文章中,我们将从零开始编写一个简单的计算器,使用简体中文进行说明。

我们将使用Python编程语言来实现这个计算器。

首先,我们需要定义计算器的基本结构。

计算器将有一个显示屏,用于显示输入的数字和计算结果。

我们可以使用Python的Tkinter库来创建一个基本的图形用户界面(GUI)来实现显示屏。

要使用Tkinter库,我们首先需要导入它:```pythonfrom tkinter import *```接下来,我们将创建一个名为"Calculator"的类,并在类中定义计算器的基本结构和功能。

我们可以定义一个构造函数来初始化计算器的界面。

在构造函数中,我们将创建一个顶层窗口,并在窗口中创建一个文本框来模拟显示屏:```pythonclass Calculator:def __init__(self, master):self.master = mastermaster.title("简单计算器")self.display = Entry(master, width=40, justify=RIGHT)self.display.grid(row=0, column=0, columnspan=4)```在上述代码中,我们创建了一个顶层窗口,标题为"简单计算器"。

然后,我们创建了一个文本框,并将其放置在窗口的第一行中,跨越4列。

接下来,我们将定义一些按钮,并将它们放置在计算器窗口中。

我们将使用格子布局来排列这些按钮。

我们可以定义一个名为"createButton"的辅助函数来创建这些按钮:```pythondef createButton(self, text, row, col, rowspan=1,colspan=1, command=None):button = Button(self.master, text=text, command=command)button.grid(row=row, column=col, rowspan=rowspan, columnspan=colspan)return button```在createButton函数中,我们创建一个按钮,并使用grid方法将其放置在指定的行列位置。

GTK+ 2.0 教程

GTK+ 2.0 教程

GTK+ 2.0 教程版本号:V_0.1.0 2002年6月25日本文是有关通过 C 语言接口使用GTK (the GIMP Toolkit) 的教程。

Table of Contents中文版说明简介 (4)从这里开始 (4)用 GTK 来写 Hello World编译 Hello World 程序信号和回调函数的原理事件Hello World 详解继续 (12)数据类型深入探索信号处理函数改进了的 Hello World组装构件 (14)组装盒的原理盒的细节组装示范程序用表组装表组装示例构件概述 (23)类型转换构件的组织无窗口构件按钮构件 (26)一般按钮 Normal Buttons开关按钮 Toggle Buttons复选按钮 Check Buttons单选按钮 Radio Buttons调整对象Adjustments ………………………………………………………………………………………………………………31创建一个调整对象轻松使用调整对象“调整对象”的内部机制范围构件Range Widgets ……………………………………………………………………………………………………………33滚动条构件 Scrollbar Widgets比例构件 Scale Widgets创建一个比例构件函数和信号 ( 至少讲了函数 )常用的范围函数设置更新方式获得和设置调整对象键盘和鼠标绑定示例杂项构件 (39)标签 Labels1箭头 Arrows工具提示对象 The Tooltips Objec t进度条 Progress Bars对话框 Dialogs标尺 Rulers状态栏 Statusbars文本输入构件 Text Entries微调按钮 Spin Buttons组合框 Combo Box日历 Calenda r颜色选择 Color Selection文件选择 File Selections容器构件Container Widgets ………………………………………………………………………………………………………76事件盒 The EventBox对齐构件 The Alignment widge t固定容器 Fixed Containe r布局容器 Layout Containe r框架 Frames比例框架 Aspect Frames分栏窗口构件 Paned Window Widgets视角 Viewports滚动窗口 Scrolled Windows按钮盒 Button Boxes工具栏 Toolba r笔记本 Notebooks菜单构件 (100)手工创建菜单手工菜单示例使用套件套件示例无文档构件 (106)快捷标签 Accel Labe l选项菜单 Option Menu菜单项 Menu Items复选菜单项 Check Menu Item单选菜单项 Radio Menu Item分隔菜单项 Separator Menu Item分离菜单项 Tearoff Menu Item曲线图 Curves绘图区 Drawing Area字体选择对话框 Font Selection Dialog消息对话框 Message DialogGamma 曲线图图像 Image插头和插座 Plugs and Sockets树视区 Tree View文本视区 Text View设置构件的属性超时、IO 和Idle 函数 (108)超时 Timeouts监控 IOIdle 函数高级事件和信号处理信号函数连接和断开信号处理函数2阻塞和反阻塞信号处理函数发出和停止信号信号的发射和传播操作选中区概述获取选中区信息提供选中区拖放概述属性函数设置源构件源构件上的信号设置目的构件目的构件上的信号GLib定义双向链表单向链表存储管理计时器字符串处理实用程序和错误处理函数GTK 的 rc 文件rc 文件的功能GTK rc 文件的格式rc 文件示例编写你自己的构件 (124)概述一个构件的剖析创建一个复合构件介绍选择一个父类头文件get_type() 函数class_init() 函数init() 函数其余的 .. .从头创建构件介绍在屏幕上显示构件表盘构件的原形主体gtk_dial_realize()大小磋商gtk_dial_expose()事件处理可能的增强深入的学习涂鸦板,一个简单的绘图程序 (141)概述事件处理绘图区构件和绘图添加 XInpu t 支持允许扩展设备信息使用扩展设备信息得到更多关于设备的信息进一步的讲解编写GTK 应用程序的技巧 (151)3简介GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。

gui计算器设计matlab代码

gui计算器设计matlab代码

GUI计算器设计MATLAB代码1. 简介GUI(Graphical User Interface,图形用户界面)计算器是一种利用图形界面设计的计算器,用户可以通过鼠标点击按钮进行数字输入和运算。

MATLAB是一种功能强大的数学计算软件,拥有丰富的绘图和可视化功能,可以用于设计和实现GUI计算器。

本文将介绍如何使用MATLAB编写GUI计算器的代码。

2. 界面设计在设计GUI计算器的界面时,需要考虑用户友好性和美观性。

可以通过MATLAB提供的GUIDE工具进行界面设计,添加数字按钮、运算符按钮和显示屏等组件。

另外,还可以设置布局和颜色,使界面更加美观。

3. 代码实现需要创建一个新的MATLAB GUI应用程序,然后在GUIDE工具中设计界面。

在界面设计完成后,需要编辑回调函数来实现计算器的功能。

以下是一个简单的GUI计算器的MATLAB代码示例:```matlabfunction calculatorGUI创建整体界面figure('Name','Calculator','NumberTitle','off','Position',[100,100,4 00,600]);创建显示屏hEdit =uicontrol('Style','edit','String','','Position',[50,500,300,50]);创建数字按钮numBtns = {'7','8','9','4','5','6','1','2','3','0'};for i = 1:10hNumBtn(i) =uicontrol('Style','pushbutton','String',numBtns{i},'Position',[50+5 0*rem(i-1,3),450-50*fix((i-1)/3),50,50],'Callback',numBtn_callback);end创建运算符按钮operatorBtns = {'+','-','*','/','='};for i = 1:5hOperatorBtn(i) =uicontrol('Style','pushbutton','String',operatorBtns{i},'Position',[2 00,450-50*(i-1),50,50],'Callback', operatorBtn_callback);数字按钮回调函数function numBtn_callback(hObject,~)str = get(hEdit,'String');str = [str get(hObject,'String')];set(hEdit,'String',str);end运算符按钮回调函数function operatorBtn_callback(hObject,~) str = get(hEdit,'String');val = get(hObject,'String');if ~isempty(str)if strcmp(val,'=')tryresult = eval(str);set(hEdit,'String',num2str(result)); catchset(hEdit,'String','Error');endelseset(hEdit,'String',[str val]);endendendend```4. 运行效果运行以上代码,将会弹出一个简单的GUI计算器界面,用户可以通过点击数字按钮和运算符按钮来输入表达式并进行计算。

java课程设计 设计一个图形界面的计算器,完成简单的算术运算

java课程设计 设计一个图形界面的计算器,完成简单的算术运算

目录一、课设任务及要求 (1)二、需求分析 (2)三、设计思路 (3)四、详细设计 (5)五、运行调试与分析讨论 (9)六、设计体会与小结 (14)七、参考文献 (15)附录 (16)中文摘要Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。

用Java实现的HotJava浏览器,显示了Java 的魅力:跨平台、动感的Web、Internet计算。

从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。

另一方面,Java技术也不断更新。

Java平台由Java虚拟机和Java 应用编程接口构成。

Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。

在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。

现在Java平台已经嵌入了几乎所有的操作系统。

这样Java程序可以只编译一次,就可以在各种系统中运行。

Java 分为三个体系J2SE,J2EE,J2ME。

说起计算器,值得我们骄傲的是,最早的计算工具的诞生地是中国。

在17世纪初,西方国家的计算工具才有了较大的发展,英国数学家纳皮尔发明的"纳皮尔算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,进而成为了现代社会应用广泛的计算工具。

关键词:java Java平台计算器一、课设任务及要求1.课设任务这次课程设计选择的题目为设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算。

这次课程设计的基本要求为设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算,且有小数点、正负号、求倒数、退格和清零功能。

拓展功能根据自己的能力添加。

图形化界面的c++计算器

图形化界面的c++计算器

思路:1首先需要使用Qt Creator创建一个GUI应用程序;2创建UI界面并设计计算器的布局,包括数字和操作符按钮,以及文本框用于显示结果;3为每个按钮添加单击事件,当用户单击按钮时,将相应的数字或操作符添加到文本框中;4添加计算器操作,当用户单击等号按钮时,解析文本框中的表达式,计算结果并显示在文本框中;5最后编译并运行程序。

源代码如下:mainwindow.h#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){ui->setupUi(this);calc_value = 0.0;div_trigger = false;mult_trigger = false;add_trigger = false;sub_trigger = false;// Connect digit buttons to digit_pressed() slotconnect(ui->pushButton_0, SIGNAL(clicked()), this, SLOT(digit_pressed()));connect(ui->pushButton_1, SIGNAL(clicked()), this, SLOT(digit_pressed()));connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(digit_pressed()));connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(digit_pressed()));connect(ui->pushButton_4, SIGNAL(clicked()), this, SLOT(digit_pressed()));connect(ui->pushButton_5, SIGNAL(clicked()), this, SLOT(digit_pressed()));connect(ui->pushButton_6, SIGNAL(clicked()), this, SLOT(digit_pressed()));connect(ui->pushButton_7, SIGNAL(clicked()), this, SLOT(digit_pressed()));connect(ui->pushButton_8, SIGNAL(clicked()), this, SLOT(digit_pressed()));connect(ui->pushButton_9, SIGNAL(clicked()), this, SLOT(digit_pressed()));}MainWindow::~MainWindow(){delete ui;}void MainWindow::digit_pressed(){QPushButton *button = (QPushButton*)sender();QString new_label;double label_number;new_label = button->text();label_number = new_label.toDouble();ui->label->setText(ui->label->text() + new_label);}void MainWindow::on_pushButton_decimal_clicked(){if (!ui->label->text().contains('.')){ui->label->setText(ui->label->text() + ".");}}void MainWindow::unary_operation_pressed() {QPushButton button = (QPushButton)sender();double label_number;QString new_label;if (button->text() == "+/-"){label_number = ui->label->text().toDouble();label_number = label_number * -1;new_label = QString::number(label_number, 'g', 15);ui->label->setText(new_label);}else if (button->text() == "%"){label_number = ui->label->text().toDouble();label_number = label_number * 0.01;new_label = QString::number(label_number, 'g', 15);ui->label->setText(new_label);}}void MainWindow::on_pushButton_clear_clicked(){ui->label->setText("");}void MainWindow::calculate(double value){if (add_trigger || sub_trigger || mult_trigger || div_trigger) {if (add_trigger){calc_value = calc_value + value;add_trigger = false;}else if (sub_trigger){calc_value = calc_value - value;sub_trigger = false;}else if (mult_trigger){calc_value = calc_value * value;mult_trigger = false;}else if (div_trigger){calc_value = calc_value / value;div_trigger = false;}}else{calc_value = value;}}void MainWindow::on_pushButton_equals_clicked(){double label_number, second_num;QString new_label;second_num = ui->label->text().toDouble();if (add_trigger || sub_trigger || mult_trigger || div_trigger)if (add_trigger){calculate(second_num);new_label = QString::number(calc_value, 'g', 15);ui->label->setText(new_label);}else if (sub_trigger){calculate(second_num);new_label = QString::number(calc_value, 'g', 15);ui->label->setText(new_label);}else if (mult_trigger){calculate(second_num);new_label = QString::number(calc_value, 'g', 15);ui->label->setText(new_label);}else if (div_trigger){calculate(second_num);new_label = QString::number(calc_value, 'g', 15);ui->label->setText(new_label);}}else{calc_value = second_num;}}void MainWindow::on_pushButton_add_clicked(){QString new_label;double label_number;label_number = ui->label->text().toDouble();calculate(label_number);add_trigger = true;ui->label->setText("");void MainWindow::on_pushButton_subtract_clicked() {QString new_label;double label_number;label_number = ui->label->text().toDouble(); calculate(label_number);sub_trigger = true;ui->label->setText("");}void MainWindow::on_pushButton_multiply_clicked() {QString new_label;double label_number;label_number = ui->label->text().toDouble(); calculate(label_number);mult_trigger = true;ui->label->setText("");}void MainWindow::on_pushButton_divide_clicked() {QString new_label;double label_number;label_number = ui->label->text().toDouble(); calculate(label_number);div_trigger = true;ui->label->setText("");。

使用Java图形界面制作简单的计算器

使用Java图形界面制作简单的计算器

使用Java图形界面制作简单的计算器使用Java图形界面制作简单的计算器,首先构想需要的组件,构想好之后进行版面设计,最后在Java编译器中输入代码,进行调试。

代码如下:import java.awt.*;import java.awt.event.*;public class Feiyong implements ActionListener {Frame f;Panel p1,p2,p3;Label lbl1,lbl2,lbl3;TextField tf1,tf2,tf3;Button btn1,btn2;CheckboxGroup cbg;Checkbox cbg1,cbg2,cbg3,cbg4;double Feiyong;public static void main(String args[]){Feiyong feiyong=new Feiyong();feiyong.go();}public void go(){f=new Frame("计算各种费用");f.setSize(400,180);p1=new Panel();p2=new Panel();p3=new Panel();tf1=new TextField(10);lbl1=new Label("所用数量:"); lbl2=new Label("总价:");tf3=new TextField(10);lbl3=new Label("单价:");btn1=new Button("计算");btn2=new Button("结束"); p1.add(lbl1);p1.add(tf1);p1.add(lbl3);p1.add(tf3);cbg=new CheckboxGroup();cbg1=new Checkbox("水费",true,cbg); cbg2=new Checkbox("电费",false,cbg);cbg3=new Checkbox("煤气费",false,cbg);cbg4=new Checkbox("电话费",false,cbg);tf2=new TextField(10);p2.add(cbg1);p2.add(cbg2);p2.add(cbg3);p2.add(cbg4);p2.add(lbl2);p2.add(tf2);p3.add(btn1);p3.add(btn2);btn1.addActionListener(this);btn2.addActionListener(this);f.add(p1,"North");f.add(p2,"Center");f.add(p3,"South");f.setVisible(true);}public void actionPerformed(ActionEvent ae) {String yy,ll,total;double ab,cd;yy=ae.getActionCommand();if(yy.equals("计算")){yy=tf1.getText();ll=tf3.getText();ab=Double.parseDouble(yy);cd=Double.parseDouble(ll);if(cbg1.getState()==true)Feiyong=ab*cd;if(cbg2.getState()==true)Feiyong=ab*cd;if(cbg3.getState()==true)Feiyong=ab*cd;if(cbg4.getState()==true)Feiyong=ab*cd;total=Double.toString(Feiyong);tf2.setText(total);}else{ System.exit(0);}}}制作出来之后,试试看计算器做的对不对:。

linux下c图形化编程之gtk+2.0简单学习

linux下c图形化编程之gtk+2.0简单学习

linux下c图形化编程之gtk+2.0简单学习在linux下想做⼀个图形化的界⾯,然后⾃⼰选择使⽤gtk+2.0来进⾏编辑,我的电脑已经安装过gtk+2.0了,所以就在⽹上找了⼀个安装⽅法,结果未测试,⼤家有安装问题可以说下,⼀起探讨下。

1、安装gcc/g++/gdb/make 等基本编程⼯具sudo apt-get install build-essential2、安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库⽂件sudo apt-get install gnome-core-devel3、⽤于在编译GTK程序时⾃动找出头⽂件及库⽂件位置sudo apt-get install pkg-config4、安装 devhelp GTK⽂档查看程序sudo apt-get install devhelp5、安装 gtk/glib 的API参考⼿册及其它帮助⽂档sudo apt-get install libglib2.0-doc libgtk2.0-doc6、安装基于GTK的界⾯GTK是开发Gnome窗⼝的c/c++语⾔图形库sudo apt-get install glade libglade2-dev7、安装gtk2.0 或者将gtk+2.0所需的所有⽂件统通下载安装完毕sudo apt-get install libgtk2.0-dev安装完毕后就可以开始写第⼀个简单的程序了!1 #include<gtk/gtk.h> //必须引⽤gtk/gtk.h这个头⽂件2int main(int argc,char *argv[]) //标准c语⾔主函数的声明3 {4 GtkWidget *window; //声明⼀个窗⼝控件的指针,其中GtkWidget是gtk+2.0控件类型。

window是变量名,与变量类型⽆关56 gtk_init(&argc,&argv); //初始化gtk+环境,在gtk+程序中是必须的78 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);9/*⽤来创建窗⼝。

【精品】使用Java图形界面制作简单的计算器

【精品】使用Java图形界面制作简单的计算器

【关键字】精品使用Java图形界面制作简单的计算器使用Java图形界面制作简单的计算器,首先设想需要的组件,设想好之后进行版面设计,最后在Java编译器中输入代码,进行调试。

代码如下:import java.awt.*;import ;public class Feiyong implements ActionListener{Frame f;Panel p1,p2,p3;Label lbl1,lbl2,lbl3;TextField tf1,tf2,tf3;Button btn1,btn2;CheckboxGroup cbg;Checkbox cbg1,cbg2,cbg3,cbg4;double Feiyong;public static void main(String args[]){Feiyong feiyong=new Feiyong();feiyong.go();}public void go(){f=new Frame("计算各种费用");f.setSize(400,180);p1=new Panel();p2=new Panel();p3=new Panel();tf1=new TextField(10);lbl1=new Label("所用数量:");lbl2=new Label("总价:");tf3=new TextField(10);lbl3=new Label("单价:");btn1=new Button("计算");btn2=new Button("结束");p1.add(lbl1);p1.add(tf1);p1.add(lbl3);p1.add(tf3);cbg=new CheckboxGroup();cbg1=new Checkbox("水费",true,cbg);cbg2=new Checkbox("电费",false,cbg);cbg3=new Checkbox("煤气费",false,cbg);cbg4=new Checkbox("电话费",false,cbg);tf2=new TextField(10);p2.add(cbg1);p2.add(cbg2);p2.add(cbg3);p2.add(cbg4);p2.add(lbl2);p2.add(tf2);p3.add(btn1);p3.add(btn2);btn1.addActionListener(this);btn2.addActionListener(this);f.add(p1,"North");f.add(p2,"Center");f.add(p3,"South");f.setVisible(true);}public void actionPerformed(ActionEvent ae) {String yy,ll,total;double ab,cd;yy=ae.getActionCommand();if(yy.equals("计算")){yy=tf1.getText();ll=tf3.getText();ab=Double.parseDouble(yy);cd=Double.parseDouble(ll);if(cbg1.getState()==true)Feiyong=ab*cd;if(cbg2.getState()==true)Feiyong=ab*cd;if(cbg3.getState()==true)Feiyong=ab*cd;if(cbg4.getState()==true)Feiyong=ab*cd;total=Double.toString(Feiyong);tf2.setText(total);}else{ System.exit(0);}}}制作出来之后,试试看计算器做的对不对:此文档是由网络收集并进行重新排版整理.word可编辑版本!。

LINUX下GTK+实现简单计算器

LINUX下GTK+实现简单计算器

摘要随着计算机的越来越普及,学习计算机的人越来越多。

作为一个学习计算机的人员,最基本的那就是必须会编程。

但是在微软垄断下的现在的计算机编程大多是基于windows下的编程。

设置很多人没听说过或者不会Linux下编程。

本设计的目的就是为初学Linux下编程的人员提供基础的例子。

让大家了解Linux下的编程。

本程序运用Linux下的工具GTK+2.0作为工具,以C语言为核心编写。

简单易懂,GTK+2.0主要功能有:●窗口与简单控件的实现●菜单与工具栏的实现●常用控件的实现●对话框的实现……关键词:Linux GTK+2.0AbstractAs computers become increasingly popular, more and more people learn the computer. As a learning computer personnel, the most basic that we must be programmed. However, under the Microsoft monopoly in computer programming is now mostly under the windows-based programming. Set a lot of people never heard of or will not, under Linux programming. The purpose of this design is for beginners programming under Linux provides the basis of examples. Let everyone know the programming under Linux.●Window and a simple realization of the control●Realization of the menu and tool bar●The realization of common control●Realization of the dialog box……KEYWORDS:Linux GTK+2.0目录第一章引言 (2)1.1GTK+简介 (2)第二章程序实现 (3)2.1窗口构建 (3)2.1.1基本窗口实现 (3)2.1.2按钮实现 (4)2.2控件 (5)2.2.1按钮盒设置 (5)2.2.2框架设置 (5)2.2.3分割面板 (6)2.3对话框 (6)2.3.1多项选一的窗口 (6)2.3.2创建消息框 (6)2.4综合实现 (7)结束语 (9)代码 (10)第一章引言1.1GTK+简介GTK+最初是GIMP的专用开发库,后来发展为Unix-like系统下开发图形界面的应用程序的主流开发工具之一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
gtk_box_pack_start(GTK_BOX(hbox2),button,TRUE,TRUE,5);
hbox3=gtk_hbox_new(FALSE,0);//定义hbox3容纳9,8,7,'*'
gtk_box_pack_start(GTK_BOX(vbox),hbox3,FALSE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox2),button,TRUE,TRUE,5);
button=gtk_button_new_with_label("-");//按键-
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_suan_clicked),(gpointer)2);
button=gtk_button_new_with_label("+");//按键+
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_suan_clicked),(gpointer)1);
gtk_box_pack_start(GTK_BOX(hbox1),button,TRUE,TRUE,5);
case 4://当“/”时
s=4;
gtk_entry_set_text(GTK_ENTRY(entry),"");
first=FALSE;count=0;break;
}
have_dot=FALSE;
for(i=0;iቤተ መጻሕፍቲ ባይዱ100;i++)//清除数字
number[i]='\0';
s=2;
gtk_entry_set_text(GTK_ENTRY(entry),"");
first=FALSE;count=0;break;
case 3://当“*”时
s=3;
gtk_entry_set_text(GTK_ENTRY(entry),"");
first=FALSE;count=0;break;
{
const gchar *num;
gint i;
if(have_result)
clear_all();//有结果则全部清除
if(count==6) return;//够6位数则不能再输入数字
count++;
num=gtk_button_get_label(GTK_BUTTON(button));//取数
button=gtk_button_new_with_label("1");//按键1
gtk_box_pack_start(GTK_BOX(hbox1),button,TRUE,TRUE,5);
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_num_clicked),NULL);
gtk_entry_set_text(GTK_ENTRY(entry),number);
}//如果有小数点则不输出
}
void on_clear_clicked(GtkButton *button,gpointer data)
{
clear_all();//全部清除
}
void on_suan_clicked(GtkButton *button,gpointer data)
gtk_box_pack_start(GTK_BOX(hbox2),button,TRUE,TRUE,5);
button=gtk_button_new_with_label("5");//按键5
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_num_clicked),NULL);
gboolean have_dot=FALSE;//是否有小数点
gboolean have_result=FALSE;//是否有结果输出
gchar number[100];//保存用户输入的数字
void clear_all(void)
{ //清除所有相关的标记
gint i;
gtk_entry_set_text(GTK_ENTRY(entry),"");
}
void on_eq_clicked(GtkButton *button,gpointer data)//当点下"="按钮时
{
double numb;
gchar num[100];
gchar *result;
switch(s)
{
case 1://当“+”时
numb=nn+mm;
break;
case 2://当“-”时
numb=nn-mm;
break;
case 3://当“*”时
numb=nn*mm;
break;
case 4://当“/”时
numb=nn/mm;
break;
}
result=g_ascii_dtostr(num,100,numb);
{
gint i;
switch(GPOINTER_TO_INT(data))
{
case 1://当“+”时
s=1;
gtk_entry_set_text(GTK_ENTRY(entry),"");
first=FALSE;count=0;break;
case 2://当“-”时
gtk_box_pack_start(GTK_BOX(vbox),entry,FALSE,FALSE,5);
hbox1=gtk_hbox_new(FALSE,0); //定义hbox1容纳3,2,1,"+"
gtk_box_pack_start(GTK_BOX(vbox),hbox1,FALSE,FALSE,5);
}
void on_dot_clicked(GtkButton *button,gpointer data)
{
gint i;
if(have_result)
clear_all();//全部清除
if(have_dot==FALSE)//如果无小数点则可以
{
have_dot=TRUE;
i=g_strlcat(number,".",100);
/*免费下载,直接上代码,纯txt格式,utf-8格式,linux行尾*/
/*编译命令:gcc jisuanqi.c -o x.out `pkg-config --cflags --libs gtk+-2.0`*/
/*不要用gcc jisuanqi.c -o x.out `pkg-config --cflags --libs gtk+-3.0`因为2和3有格式区别*/
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_clear_clicked),NULL);
entry=gtk_entry_new();
gtk_widget_set_direction(entry,GTK_TEXT_DIR_RTL);
#include<gtk/gtk.h>
#include<stdlib.h>
static GtkWidget *entry;//定义单行输入控件来显示输入输出的数字
gint count=0;//计位
gdouble nn=0;//计数一
gdouble mm=0;//计数二
gint s=0;//算法
gboolean first = TRUE;//首次输入
hbox2=gtk_hbox_new(FALSE,0);//定义hbox2容纳6,5,4,'-'
gtk_box_pack_start(GTK_BOX(vbox),hbox2,FALSE,FALSE,5);
button=gtk_button_new_with_label("6");//按键6
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_num_clicked),NULL);
vbox=gtk_vbox_new(FALSE,0);
gtk_container_add(GTK_CONTAINER(window),vbox);
hbox=gtk_hbox_new(FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,5);
gtk_entry_set_text(GTK_ENTRY(entry),result);
have_result=TRUE;
}
int main(int argc, char *argv[])//主函数开始
{
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *hbox,*hbox1,*hbox2,*hbox3,*hbox4;
gtk_box_pack_start(GTK_BOX(hbox2),button,TRUE,TRUE,5);
button=gtk_button_new_with_label("4");//按键4
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_num_clicked),NULL);
相关文档
最新文档