- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Gtk.Button,它打开 Gtk.FileChooserDialog 来保存文件。我实现了一个用于确认的 Gtk.Dialog,当所选文件名已存在于要保存文件的目标文件夹中时,该对话框会弹出。如果我在此对话框中单击“取消”,确认对话框将被销毁,但我无法使用“取消” ' 或 Gtk.FileChooserDialog 的“保存”按钮不再存在。任何帮助表示赞赏。谢谢。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
from gi.repository import Gtk
class MainWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="demo")
self.set_position(Gtk.WindowPosition.CENTER)
self.button = Gtk.Button()
self.button.set_image(Gtk.Image(stock=Gtk.STOCK_SAVE))
self.button.connect('clicked', self.on_button_clicked)
self.add(self.button)
def on_button_clicked(self, widget):
dialog = Gtk.FileChooserDialog("Save file", self,
Gtk.FileChooserAction.SAVE,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_SAVE, Gtk.ResponseType.OK))
response = dialog.run()
if response == Gtk.ResponseType.OK: # OK button was pressed or existing file was double clicked
cansave = False
if os.path.exists(dialog.get_filename()) == True: # does file already exists?
dialog2 = DialogSaveFile(self, dialog.get_filename()) # ask to confirm overwrite
response = dialog2.run()
if response == Gtk.ResponseType.OK:
cansave = True
else:
pass
dialog2.destroy()
else:
cansave = True
if cansave == True: # save new file
open(dialog.get_filename(), "w").close
dialog.destroy()
else:
pass
else:
dialog.destroy()
class DialogSaveFile(Gtk.Dialog):
def __init__(self, parent, db):
Gtk.Dialog.__init__(self, "Confirm overwrite", parent, 0,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OK, Gtk.ResponseType.OK))
self.box = self.get_content_area()
self.label = Gtk.Label("The file `" + db + "` exists.\nDo you want it to be overwritten?")
self.box.add(self.label)
self.show_all()
win = MainWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
最佳答案
离开 response =dialog.run()
运行循环后,您需要重新创建文件对话框,或者再次调用 dialog.run()
将文件对话框放回到运行循环中,以便您可以找出按下了哪些按钮。
重构它,使文件对话框处理程序位于单独的函数中应该可以解决问题(未经测试,但您会明白的)
def on_button_clicked(self, widget):
dialog = Gtk.FileChooserDialog("Save file", self,
Gtk.FileChooserAction.SAVE,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_SAVE, Gtk.ResponseType.OK))
self.handle_file_dialog(dialog)
def handle_file_dialog(self, dialog):
response = dialog.run()
if response == Gtk.ResponseType.OK: # OK button was pressed or existing file was double clicked
cansave = False
if os.path.exists(dialog.get_filename()) == True: # does file already exists?
dialog2 = DialogSaveFile(self, dialog.get_filename()) # ask to confirm overwrite
response = dialog2.run()
if response == Gtk.ResponseType.OK:
cansave = True
dialog2.destroy()
else:
dialog2.destroy()
# We need to re-run the file dialog to detect the buttons
self.handle_file_dialog(dialog)
return
else:
cansave = True
if cansave == True: # save new file
open(dialog.get_filename(), "w").close
dialog.destroy()
else:
pass
else:
dialog.destroy()
关于Python GTK : confirm overwrite dialog blocks filechooser dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28075809/
我在学习JavaFx的过程中,遇到了一个问题。我正在尝试使用 JavaFx 中的 FileChooser,就像我习惯于在 main() 方法中使用 Swing 中的 JFileChooser 一样。但
我正在尝试在 cn1 中使用 FileChooser。我已按照此处的说明进行操作: Codename One 和 GitHub 我添加了扩展,然后刷新了我的 cn1libs 完成此操作后,我将代码示例
我应该如何将 javafx.stage.FileChooser 添加到 javafx gui 应用程序的场景中。 我做了以下 Group root = new Group(); Scene scene
我想知道如何更改 FileChooserListView 和 FileChooserIconView 的字体颜色(文本颜色)。 我可以更改背景颜色(为白色),我想将字体颜色更改为黑色。 我该怎么做?
我不知道为什么,但如果我单击“提交”或“取消”,则会打开 showOpenDialog() 的第二个窗口。我尝试了 JFileChooser 但出现了同样的问题。 private void menu
是否可以使用 JavaFX 文件选择器(或类似的替代方法)来创建新文件? 输入不存在文件的名称在 Linux 上有效(准确地说是 Ubuntu),但在 Windows 上文件选择器不允许这样做。 最佳
我正在寻找 javafx FileChooser(在 Kotlin 中)的解决方案。我坚持这一点,我无法通过 Root View ,因为 Window! 是预期的: button("open some
版本 python :3.7 操作系统:Windows 10 基维:1.11.1 kivy安装方式:pip 描述 FileChooser 在文件列表中滚动时重叠文本。看起来第一个内容保留下来并且在滚动
我正在尝试使用 FileChooser,但我对如何打开所选文件感到困惑。由于文件可以是任何类型 - pdf、docx 等,如何在 codenameone 中显示文件或为用户提供选择首选应用程序打开它的
我有一个可写图像,我想使用 FileChooser 保存。我该怎么做,因为它不适用于此代码: public void handle(ActionEvent event) { Fil
我正在尝试制作一个程序来存储您选择的文件夹的路径。问题是,当我尝试存储字符串的路径时,它不存储完整目录。 如果我选择“C:\Users\n\Documents\English”,它将存储“C:\Use
您好,我正在使用 Java Swing 开发一个程序,并且设置了 4 个选项 Pane 来获取某些输入,但是当我运行该程序时,它会显示选项窗口,但当我关闭选项 Pane 时它运行并运行最后一个按钮,我
如何使用 FileDialog 选择不同目录中的多个文件? 我需要创建一个用户界面,在其中需要添加来自不同目录的大量文件。另外,我需要创建一个复选框来指示选择哪些文件进行进一步操作。 我尝试使用 SW
如何才能只允许用户打开特定文件? 就我而言,我只想允许打开“myapplication.exe”文件,该文件可能位于我的文件系统上的某个位置,所以这就是我需要FileChooser的原因>. 我只知道
我想要做的是使用FileChooser来选择路径。 选择后,该路径应由以下实例使用。 我的问题是如何强制所有内容在路径上等待,因为否则程序只是运行而不等待。 //GUI JFrame
我正在做作业。基本上作业已经完成,但我试图通过向其添加 GUI 来使其变得更好。 但是我在 FileChooser 上遇到了一些问题,因为我不太明白它是如何工作的。 import javax.swin
我的图像查看器出现问题,它要求我的文件选择器返回方法。该程序应该为一只猫打开一张图片。 我不知道如何修复我的语法错误。 我只是想解决图像查看器方法中文件选择器的问题,继续查看是否有更多问题,我是 GU
我的代码应该从 JFileChooser 中选择一个文件夹,但即使我使用 fs.setDialogType,它的行为仍然像选择文件一样。我尝试了 showSaveDialog 和 showOpenDi
在我的项目中,我使用 JavaFX FileChooser 让用户保存文件。我注意到一个错误,其中具有指定文件过滤器的文件在 Linux 系统上总是保存为 .txt。从另一个 stackoverflo
我使用以下代码选择大约 800 个图像文件,每个图像文件大小为 5 MB: List flist = fileChooser.showOpenMultipleDialog(label.getScene
我是一名优秀的程序员,十分优秀!