【发布时间】:2023-03-28 03:59:01
【问题描述】:
有什么方法可以在win32api打印之前带一个设置页面?
代码如下:
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox
import win32api
root = Tk()
root.geometry("500x500")
def open_dialog():
dialog = filedialog.askopenfilename(initialdir = "C:/" , filetypes = (("Text Files" , "*.txt") , ("Python Files" , "*.py") , ("html files" , "*.html")))
if dialog != "":
box = messagebox.askyesno("Confirm" , "Are you sure you want to print this file?")
if box == 1:
win32api.ShellExecute(0 , "print" , dialog , None , "." , 0)
my_button = Button(root, text = "Select file to print" , command = open_dialog)
my_button.place(x = 190 , y = 210)
mainloop()
这里,当我打开一个文件打印后,win32api只是安静地做,不显示任何设置窗口。
我想要的是在打印之前带一个设置窗口,以便我可以根据自己的意愿更改设置。
例如,当我尝试在默认的 Windows 记事本中打印文件时,它会显示如下设置窗口:
我什至想带一个这样的设置窗口,以便我可以根据自己的意愿更改设置。
有没有办法在win32api中实现这一点?
如果有人能帮助我,那就太好了。
编辑:
感谢@Zhu Song - MSFT 的回答。您的回答帮助我带来了我想要的设置窗口,但我在打印文件时遇到了一些问题。
当我尝试打印文本文件时,一切正常,但我正在打印的文件的路径和当前页码也与作为页眉和页脚的文本一起打印。
这是一张图片:
正如您在此处看到的,顶部和底部有一些我不想打印的不必要的文本。
另外,当我尝试打印 python 文件时,文件中的文本根本没有被打印出来:
有没有办法解决这些问题?
【问题讨论】:
-
如果您想控制打印,您需要正确打印。 ShellExecute 不是为此而设计的。你的整个方法注定要失败。我在你最后一个问题上也说过这个。
标签: python winapi tkinter printing