gtk printOperation 没有对话框
Posted
技术标签:
【中文标题】gtk printOperation 没有对话框【英文标题】:gtk printOperation without dialog 【发布时间】:2021-12-24 09:04:37 【问题描述】:我正在尝试制作一个没有对话窗口的打印例程,我知道这是使用 PRINT 选项而不是 PRINT_DIALOG 完成的。
Gtk.PrintOperationAction.PRINT_DIALOG
Gtk.PrintOperationAction.PRINT
带有对话框选项的例程相应地工作,这些选项被“print.toFile(...)”函数捕获并在行中读取:
pageSetup.loadFile(Assets.absoluteFilePath('pagesetup.conf'));
printSettings.loadFile(Assets.absoluteFilePath('printsettings.conf'));
它们出现在日志中。
但是什么都没有发生,没有任何事件被触发('begin-print'、'draw-page' 或其他)。
我将 node-gtk 包与 Meteor 一起使用,这在“Assets.absoluteFilePath”(Meteor)函数中得到了证明 以及在camelCase中的所有其他行(node-gtk这样做)
我不相信这些包是问题的原因,在我看来缺少某些东西,因为结果是三个 (3 -> IN_PROGRESS)。
我发现的所有示例都使用 PRINT_DIALOG 例程
botao2.on('clicked', () =>
let printSettings = new Gtk.PrintSettings();
let pageSetup = new Gtk.PageSetup();
pageSetup.loadFile(Assets.absoluteFilePath('pagesetup.conf'));
printSettings.loadFile(Assets.absoluteFilePath('printsettings.conf'));
let print = new Gtk.PrintOperation(
//'allow-async': true,
);
print.setUnit(Gtk.Unit.NONE);
print.setPrintSettings(printSettings);
print.setDefaultPageSetup(pageSetup);
print.setUseFullPage(true);
print.setShowProgress(true);
console.log( pageSetup, printSettings );
print.on('begin-print', (printContext, num) =>
print.nPages = 1;
width = Math.floor(printContext.getWidth());
height = Math.floor(printContext.getHeight());
);
print.on('draw-page', (printContext) =>
console.log('draw-page', printContext);
);
print.on('status-changed', (...args) =>
console.log('status-changed', args);
);
print.on('done', (res) =>
console.log('done', res);
);
console.log(print.run(Gtk.PrintOperationAction.PRINT)); // always 3 -> IN_PROGRESS
);
【问题讨论】:
【参考方案1】:这是 GTK4 中存在的一个错误,在 GTK3 中它可以工作,团队已经修复它,目前只是等待获得分发包
>https://gitlab.gnome.org/GNOME/gtk/-/issues/4439
【讨论】:
以上是关于gtk printOperation 没有对话框的主要内容,如果未能解决你的问题,请参考以下文章