gtkbuilder f#对象引用未设置为对象的实例



我在我的简单应用程序运行上制作mainwindow时有一个问题,给出的错误是 - 对象引用未设置为对象的实例。

当应用程序被调试并且错误发生在 handler.window1.showall()

时,这会发生这种情况。

我确实在网上找到了一些代码,这些代码暗示添加一些成员代码,如 ement this.thate.thate()= window1 >它。

我很高兴您能为我提供任何帮助,因为我整天都在尝试以多种方式进行工作,而根本无法做到。

namespace potato
module Main =
    open System
    open Gtk
    type Handler()=class
        [<Object>]
        [<DefaultValue(true)>]
        val mutable window1 : Window
    end
        [<EntryPoint>]
        let Main(args) = 
            Application.Init()
            let builder =  new Builder("GUI.ui")
            let handler = new Handler()
            builder.Autoconnect(handler)
            handler.window1.ShowAll()
            Application.Run()
            0

这是glade.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<interface>
  <requires lib="gtk+" version="3.18"/>
  <object class="GtkWindow" id="window1">
    <property name="width_request">1024</property>
    <property name="height_request">576</property>
    <property name="can_focus">False</property>
    <child>
      <placeholder/>
    </child>
  </object>
</interface>

对,问题就在我眼前,我最终不得不经过旧的测试项目以查看并意识到@SCRWTP的暗示,这是旧的工作修复了GTK3 GTKBUILDER的代码。

namespace potato
module Main =
open System
open Gtk
type Handler()=class
    [<Builder.Object>]
    [<DefaultValue(true)>]
    val mutable window1 : Window
end
let OnDelete (args:DeleteEventArgs) =
    Application.Quit()
    args.RetVal <- true 
[<EntryPoint>]
let Main (args) = 
    Application.Init()
    let gxml =  new Builder("GUI.xml")
    let handler = new Handler()
    do gxml.Autoconnect(handler)
    handler.window1.DeleteEvent
    |> Event.add OnDelete
    handler.window1.ShowAll()
    Application.Run()
    0

原因,我现在明白的是我已经指定了一个处理程序并没有传递它,因为什么都没有通过它:( handler.window1.deleteevent)当我打电话给Showall时,它根本不会显示,希望这对别人有帮助有类似的问题

相关内容

  • 没有找到相关文章

最新更新