Fortran Coder

查看: 5391|回复: 2
打印 上一主题 下一主题

[绘图界面库] SimplelyFortan界面模块AppGraphics

[复制链接]

146

帖子

42

主题

1

精华

宗师

F 币
1272 元
贡献
629 点
跳转到指定楼层
楼主
发表于 2020-9-18 03:20:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 weixing1531 于 2020-9-19 02:48 编辑

SimplelyFortan编译器提供了一个简单的界面模块AppGraphics
包含简单的菜单、控件、对话框、画图甚至动画功能。
下面这个范例用于整数加、减、乘法运算


[Fortran] 纯文本查看 复制代码
program main
    use appgraphics
    implicit none
    
    integer::myscreen,i,i1,i2,i3,i4,i5,i6
    character(1)::s
    
    myscreen = initwindow(800, 400, "整数加、减、乘法简单程序", closeflag=.TRUE.)!动画必须dbflag=.TRUE.
    call setcolor(WHITE) !前景色
    call setbkcolor(GREEN) !背景色
    call setmatchthemetextstyle()
    call settextstyle(SERIF_FONT, HORIZ_DIR, 25) !设置字体、文字方向、字号
    call settextjustify(CENTER_TEXT,CENTER_TEXT) !文本居中对齐
    call clearviewport()!清屏
    
    i1=createtextbox(100,200,50,25)!文本框
    call settextboxcontents(i1, "1")!初始值

    i2=createtextbox(200,200,50,25)!文本框
    call settextboxcontents(i2, "2")!初始值
    
    i3=createscrollbar (155, 185, 40, 56, SCROLL_VERTICAL, test) !垂直滚动条
    call setscrollrange(i3,1,3) !设置垂直滚动条档位范围
    call setscrollposition(i3,1) !设置垂直滚动条当前档位
    
    i4=createtextbox (155, 200, 40, 25)!文本框
    call settextboxcontents(i4, "+")!初始值
    
    i5=createtextbox(250, 200,50,25)!文本框
    call settextboxcontents(i5, "=")!初始值
    i6=createtextbox(300, 200,100,25)!文本框
    call settextboxcontents(i6, "3")!初始值
    
    i = createbutton(450, 200, 50, 25, "Run", start)!按钮
    i = createbutton(600, 200, 60, 25, "Close", quit)!按钮
    
    call loop()
    call closewindow(myscreen) !关闭窗口
contains
    subroutine Quit()
        call stopidle()
    end subroutine
    
    subroutine start()
        integer::i,j,k,m=0
        character(80)::s1,s2,s3
        
        i=gettextboxcontents(i1,s1) !i返回字符串长度 s1返回文本字符串
        j=gettextboxcontents(i2,s2) 
        read(s1,*)i !字符串转换为整数
        read(s2,*)j
        
        k=getscrollposition (i3)!返回滚动条当前位置

        select case(k)
        case(1)
            m=i+j
        case(2)
            m=i-j
        case(3)
            m=i*j
        end select
        
        write(s3,"(i0)")m !整数转换为字符串
        call settextboxcontents (i4, s)!设置文本框内容
        call settextboxcontents (i6, trim(adjustl(s3)))!设置文本框内容 
    end subroutine
    
    subroutine test(j) !j返回滚动条位置
        integer::j

        select case(j)
        case(1)
            s="+"
        case(2)
            s="-"
        case(3)
            s="*"
        end select
        
        call settextboxcontents (i4, s)!设置文本框内容
    End subroutine
end program main

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

146

帖子

42

主题

1

精华

宗师

F 币
1272 元
贡献
629 点
板凳
 楼主| 发表于 2020-9-21 23:00:10 | 只看该作者
清香白莲 发表于 2020-9-21 20:30
写 UI 用 Qt/C# 不香吗?

主要是C++不会啊
GTK也有Fortran接口

4

帖子

0

主题

0

精华

入门

F 币
105 元
贡献
31 点
QQ
沙发
发表于 2020-9-21 20:30:33 | 只看该作者
写 UI 用 Qt/C# 不香吗?
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 10:51

Powered by Tencent X3.4

© 2013-2024 Tencent

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