| Server IP : 121.121.20.254 / Your IP : 216.73.216.202 Web Server : Microsoft-IIS/10.0 System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64 User : IUSR ( 0) PHP Version : 8.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Python315/Lib/test/test_tkinter/ |
Upload File : |
import os
import unittest
from tkinter import filedialog
from tkinter.commondialog import Dialog
from test.support import requires, swap_attr
from test.test_tkinter.support import setUpModule # noqa: F401
from test.test_tkinter.support import AbstractTkTest
requires('gui')
class NativeDialogTest(AbstractTkTest, unittest.TestCase):
# Open, SaveAs and Directory wrap modal native dialogs. The _test_callback
# seam is called by show() just before the dialog would open; replacing it
# with a function that raises exercises show() without blocking on the
# dialog.
def check(self, dialog_class, command):
self.assertEqual(dialog_class.command, command)
master = None
def test_callback(dialog, parent):
nonlocal master
master = parent
raise ZeroDivisionError
with swap_attr(Dialog, '_test_callback', test_callback):
d = dialog_class(self.root, title='Test')
self.assertRaises(ZeroDivisionError, d.show)
self.assertIs(master, self.root)
def test_open(self):
self.check(filedialog.Open, 'tk_getOpenFile')
def test_saveas(self):
self.check(filedialog.SaveAs, 'tk_getSaveFile')
def test_directory(self):
self.check(filedialog.Directory, 'tk_chooseDirectory')
class FileDialogTest(AbstractTkTest, unittest.TestCase):
# The pure-Python FileDialog runs its own modal loop in go(); its logic is
# exercised here without entering the loop.
def test_selection(self):
d = filedialog.FileDialog(self.root)
d.directory = os.path.abspath(os.sep)
d.set_selection('spam.txt')
self.assertEqual(os.path.basename(d.get_selection()), 'spam.txt')
def test_filter(self):
d = filedialog.FileDialog(self.root)
d.set_filter(os.getcwd(), '*.py')
self.assertEqual(d.get_filter(), (os.getcwd(), '*.py'))
def test_ok_cancel(self):
d = filedialog.FileDialog(self.root)
d.directory = os.getcwd()
d.set_selection('spam.txt')
d.ok_command() # Accepts the current selection.
self.assertEqual(os.path.basename(d.how), 'spam.txt')
d.cancel_command() # Returns no selection.
self.assertIsNone(d.how)
def test_subclasses(self):
for cls in filedialog.LoadFileDialog, filedialog.SaveFileDialog:
with self.subTest(cls=cls.__name__):
d = cls(self.root)
self.assertIsInstance(d, filedialog.FileDialog)
self.assertEqual(d.top.title(), cls.title)
if __name__ == "__main__":
unittest.main()